2017-06-04 85 views
0

当我尝试和推动承诺高达GitHub上,我得到一个OSX SSH密钥似乎无法与git

Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights and the repository exists. 

幸运的是,help.GitHub有a great article on solving SSH issues.我通过这个指南跑,发现ssh-add -l -E md5回报The agent has no identities.该指南says to generate a new key,我做了。之后,ssh-add返回像预期的2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

太好了,我想问题已经解决了。我尝试再次推动,并获得相同的公钥问题。我确定我的密钥在GitHub中正确设置。当我开始新的会话时,ssh-add再次返回没有身份。我甚至从头开始按照上面的文章开始了这个过程。我有checked my permissions,现在我没有排除故障线索。

+0

很难知道发生了什么不完整的日志你的行动,价值观,他们回来了,等等。例如,如果你开始一个新的代理,你可能已经加载了钥匙插进*是*剂,而不是苹果的 - 这会解释一个不知道任何事情的新终端。 –

+0

......所以,在MacOS上,所有运行'eval“$(ssh-agent -s)”'的指令都不适用:钥匙串已经为您提供了一个与会话中的所有内容共享的代理。 –

+0

顺便说一句,你在代理中有一个密钥(“你的代理”是Apple Keychain,而不是你手动调用的任何东西),使用'ssh-add -L'(yes,* capital *'L')来转储公共端,并确保它与github中的完全相同 - 只是为了确保它们在两个地方都是同一个关键。 –

回答

2

首先,确保您的公钥是correctly registered on your GitHub profile(作为一个连续的行,没有任何换行符)。其次,确保生成(至少用于测试)私钥而不是受密码保护:您只需要ssh代理来管理带密码的密钥。如果你的密钥没有密码,你完全不需要ssh代理。

ssh-keygen -t rsa -C "key for GitHub access" -q -P "" 

这将取代您当前的密钥,因此请确保您不再需要您当前的密钥。
Test your keyssh -T [email protected]

+0

不使用密码短语是问题。我不知道为什么我的钥匙首先停止工作,但是让我重新开始了!谢谢一堆!现在我可以研究为什么SSH代理不起作用,并且看看我是否可以再次开始使用密码保护密钥。 –

+0

OS X行为已更改。您需要在每次登录/重新启动后重新添加密钥。 –