使用 PKCS#8 加密私钥和 ssh-agent

使用 PKCS#8 加密私钥和 ssh-agent

我正在为 Rails 开发设置一个新的 Ubuntu 系统 (12.04.2 LTS),并希望按照以下说明使用加密的 SSH 私钥文章。我可以使用GitHub一切正常,但当我按照第一篇文章中的说明操作时,我无法再使用 ssh 登录。相反,我收到错误“代理承认无法使用密钥签名”。我发现了一个可能相关的错误(由于声誉低,无法发布链接,#328127);我没有被要求输入私钥密码,因此我在创建后修改了私钥这一事实可能是问题所在。尝试使用ssh-add仅手动添加新密钥会导致错误返回两次。我不确定如何设置$SSH_AUTH_SOCK为零,否则我也会尝试这样做。任何帮助都将不胜感激,谢谢!

答案1

取消设置 SSH_AUTH_SOCK 是一种解决方法,但这样做会禁用 ssh-agent,有些人可能仍想使用它。

似乎 ssh-agent 无法使用私钥签署任何东西,因为它在自动将此密钥添加到密钥环时没有正确地解密它。

如果在 ~/.ssh 中生成标准 id_rsa 身份文件,或者将私钥与其公钥一起存储在 ~/.ssh 中,ssh-agent 会自动将其添加到其密钥环中。但是,这样做时,它不会提示输入密码,也不会解密密钥。

解决方案是手动添加密钥。使用 ssh-add -D 从 ssh-agent 中删除所有 pkcs#8 加密密钥,并将私钥+公钥文件移出 ~/.ssh。重新启动或 ssh-agent -k,然后将 pkcs#8 加密的私钥移回 ~/.ssh。使用 ssh-add,系统会提示您输入解密密码。ssh-agent 现在可以访问未加密的私钥,因此可以用它签署文件。

(通过达蒙·德兰斯菲尔德

答案2

抱歉,我的回答太仓促了,$SSH_AUTH_SOCK修复方法对我有用;我在另一个帖子中找到了说明漏洞线程。如果其他人也遇到问题,输入export SSH_AUTH_SOCK=0即可解决问题。希望有帮助!

答案3

如果你愿意,你还可以做另一件事,那就是用 OpenSSH 提供的密钥代理替换 GNOME SSH 密钥代理,然后再次添加所有密钥,如本文

相关内容