每次我尝试通过 SSH 登录远程服务器或在 git 存储库上尝试 git pull/push 时,我都会收到提示:
Enter passphrase for key '/home/th0th/.ssh/id_rsa':
我想将我的密钥添加到密钥环中,并且我希望在登录时无需输入密码即可解锁密钥环(我认为这是 Arch Linux 上 gnome-shell 的默认行为)。我尝试使用 添加我的密钥,但即使我的密钥在类别seahorse
下可见,终端也会提示我输入密码。这是错误还是我错过了一步?Gnome2 Key Storage
seahorse
编辑:防止 seahorse 提示输入密码是另一个问题。我的问题是,gnome keyring 无法记住 SSH 密钥密码。
顺便说一下,我现在是 15.04。
答案1
核心问题是你有一个受密码保护的 SSH 密钥。这意味着私钥实际上是加密,并且需要解密才能使用,因此需要密码。(同样的逻辑也适用于 PGP 密钥操作,例如签名,您需要使用私钥来生成签名)。应该有一个 SSH 身份验证代理,或者至少一个与 gnome-keyring (14.04) 配合使用的代理,它将处理“提示”和“gnome-keyring”,但是请注意,在 CLI 环境中工作时情况并非总是如此。
Seahorse 应该在“安全 Shell”下显示您的 SSH 密钥,而不会显示其他任何内容,这可能会导致一个问题。但主要问题是 SSH 密钥的私钥部分已加密并受密码保护,并且需要密码才能使用密钥启动“安全”协商部分。然而,它实际上并不是seahorse
控制身份验证的,而是gnome-keyring
必须记住某些事情的部分。虽然它应该能够记住您的密码,它显然无法以需要的方式运行,为您提供一个 GUI 提示来输入密码,然后将密码存储在密钥环中。
在所有情况下删除密码提示的唯一正确方法是从 SSH 密钥中删除密码。 虽然 SSH 密钥最好有密码作为额外的保护层,但理想情况下你会仅在会话期间或 GUI 会话期间存储私钥密码,直到您注销或重新启动,或者理想情况下在您进行 SSH 密钥认证的短时间内存储私钥密码。这样做是为了安全目的,但在某些情况下这是不可行或不必要的。
如果您希望从 SSH 密钥中删除密码,则需要按照以下步骤操作:(来源)
删除密码。
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa_new
备份并替换您的私人 SSH 密钥。
mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup mv ~/.ssh/id_rsa_new ~/.ssh/id_rsa
设置密钥权限,因为私钥只有所有者可读(这是 OpenSSH 强制执行的)
chmod 400 ~/.ssh/id_rsa
通过 SSH 测试连接,应该没有密码提示。