我想为我的GitHub帐户生成一个SSH密钥。按照这指南,我运行了ssh-keygen -t ed25519 -C "my@email.com"
。我给它取了github_main
文件名,并输入了密码。一切都很顺利。
运行ssh-add ~/.ssh/github_main
给出了一个问题,但是我通过使用稍微不同的路径运行命令来解决这个问题。它返回了Identity added: C:/Users/brent/.ssh/github_main (my@email.com)
,所以我假设一切都正常。
然后我测试了与ssh -T git@github.com
的连接。它说我成功地连接了,但是GitHub不提供shell访问,在我看来,这是可行的。
我将SSH令牌添加到我的GitHub帐户中,那里也没有问题。然后,我尝试通过SSH克隆我的一个存储库,奇怪的是,它没有工作;它给出了以下结果:
Cloning into 'my-repo'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我试着用HTTPS克隆相同的存储库,效果很好。经过大约一个小时的搜索和搜索,我已经多次读到文件名对结果没有影响,但我决定尝试将文件重命名为原始名称。我将公钥重命名为id_ed25519.pub
,将私钥重命名为id_ed25519
。这一次,当我尝试用SSH克隆存储库时,它询问密码并克隆了存储库。这让我很困惑,尤其是因为到目前为止我所读到的所有东西都告诉我,文件名并不重要。
虽然它可以使用名为id_ed25519
的文件,但是我仍然想重命名这些文件,因为这个文件名没有告诉我密钥的任何信息,而且我只能有一个这样加密的密钥。
发布于 2021-09-23 18:59:05
您没有使用所有的默认名称,这意味着您需要告诉ssh您把东西放在哪里。为了避免每次重复,在它的配置中这样做,这是它在~/.ssh/config
中查找的。第一行:addkeystoagent yes
。第二行:host github
。第三行:hostname github.com
。第四行:identityfile path/to/your/privateidentityfile
。host
行启动一个块,现在可以说是git clone git@github:yourghid/yourrepo
,这就足够了。您甚至可以为主机添加一个user git
行,然后添加git clone github:yourghid/yourrepo
。拼写由你决定,如果我做了很多,我会拼写像gh
,host gh
user git
hostname github.com
identityfile ~/.ssh/id_gh
之类的东西,然后git remote add linux gh:torvalds/linux
就能工作了。
假设man 5 ssh_config
,man第5节是文件格式。Bash知道这些东西,比如man 5
并点击几次标签,告诉我没有真正显示所有文件格式的文档。
https://stackoverflow.com/questions/69307634
复制