ssh-add到底做什么?


15

我最近重新安装了笔记本电脑,发现'git clone'无法正常工作。我一直收到Permission denied (publickey).错误。

该修补程序记录在GitHub的SSH问题页面上:用于ssh-add告知SSH我要用于在GitHub上进行身份验证的密钥。

我的问题是:ssh-add实际上,这实际上是做什么的?

我一直想扩大对SSH的了解,这似乎是一个很好的借口:-)

Answers:


21

ssh-add将私钥身份(来自您的~/.ssh目录)添加到身份验证代理(ssh-agent),以便ssh代理可以为您处理身份验证,并且您无需在终端输入密码。


老实说,这让我有些困惑。我认为ssh客户端总是在您的~/.ssh目录中使用密钥。某些发行版会ssh-add自动完成吗?也许那就是为什么我感到困惑?
2015年

4
ssh确实使用~/.ssh目录中的密钥,但是如果密钥受密码保护,则必须在某个时候输入该密码。如果使用ssh-agentssh-add,则只需键入一次该密码。否则,每次使用时都必须输入密码ssh。请注意,如果密钥不受密码保护,则可以在ssh不要求输入密码的情况下使用。
彼得·约翰·阿克兰

可以有多个ssh密钥~/.ssh,这可能是更有用的东西,请参阅SObitbucket文档
Frank Nocke

0

根据github上的这篇文章,有时在某些Linux发行版上,即使您正确设置了所有内容,此错误也会出现:

Agent admitted failure to sign using the key.
debug1: No more authentication methods to try.
Permission denied (publickey).

您应该运行ssh-add以解决该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.