我试图将我的博客(Octopress)推送到github并收到此错误:
MacBook-Air:octopress bdeely$ git push origin source
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我生成了一个SSH密钥,保存了它,甚至在SSH密钥设置中将它与我的GitHub帐户相关联,但我继续检查状态并得到了同样的错误:
MacBook-Air:.ssh bdeely$ ssh -T git@github.com
Permission denied (publickey).
除此之外,我检查了github's help page,执行了以下操作并收到此错误消息:
MacBook-Air:~ bdeely$ ssh-add -l
The agent has no identities.
有谁知道错误以及如何解决这个问题?
答案 0 :(得分:3)
按照命令:
mkdir ~/.ssh //in case that the folder doesnt exist... cd ~/.ssh ssh-keygen -t rsa -C "youremail@somewhere.gr" #hit enter when asks for file to save the key. #enter the passphrase
最后将 id_rsa.pub 复制到您的github帐户中。
答案 1 :(得分:2)
在您的终端试试这个:
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
输入您的密码(如果有),它应该有效。希望这会有所帮助:-)
答案 2 :(得分:2)
在OSX上,如果键入
ssh-add -l
然后你回来了#34;没有身份",这意味着你的ssh代理没有加载任何身份。通常,当mac重新启动时,你没有身份。
我通过显式运行
重新启动后添加了我的ssh-add
这会从〜/ .ssh / id_rsa
加载默认标识您也可以使用带有特定身份的ssh-add命令
ssh-add ~/foo/bar/is_rsa
添加您的身份后,您可以通过输入
来列出所有身份ssh-add -l
确保您至少有一个列出。
答案 3 :(得分:0)
我希望这会对你有所帮助:
我遇到了同样的问题,并且疯狂的沮丧地想要自己的眼睛;网上没有任何东西让我得到答案,我试图使用git push
命令而没有准确指定URL(这也可以解决我认为的问题),所以我没有看到连接失败的方式。
我已经为具有两个不同密钥的两个用户正确设置了.ssh/config
,即使使用了IdentitiesOnly yes
,它应该覆盖自动提供错误的ssh-agent
ssh身份。
当我检查本地存储库配置时,我终于意识到了这个问题 - 它是条目
[remote "origin"]
url = git@github.com:{my-username}/{my-repo-name}.git
我在.ssh/config
文件中的配置对两个用户都使用相同的HostName github.com
条目,我对这一切都是全新的,所以我没有意识到要正确覆盖ssh-agent
,我必须指定确切的URL,否则我的.ssh/config
文件中的特定标识将被忽略,并且ssy-agent
列出的第一个密钥(我的情况是错误的)将默认使用。
我通过将本地回购网址更改为url = git@github-personal:{my-username}/{my-repo-name}.git
来解决此问题,我在Host github-personal
中将.ssh/config
设置为git push
。
解决这个问题的另一种方法是在{{1}}命令本身的URL中指定用户,或者甚至更好,在解决这个我自己糟糕的方式之后的帖子中描述的解决方案:
https://superuser.com/questions/272465/using-multiple-ssh-public-keys
我无法相信没有官方消息来源可以提供解决方案,甚至没有正确解释这种看起来很常见的边缘情况(使用SSL从一台计算机访问两个不同的github帐户)。
答案 4 :(得分:0)
我遇到了同样的问题。原因是我将密钥文件移动到另一个文件夹;当我把它们移回原来的位置时,它成功地运作了。