让 SSH/gpg-agent 不要求输入不使用的密钥的密码

让 SSH/gpg-agent 不要求输入不使用的密钥的密码

我有两个 SSH 密钥。id_rsa是我的普通密钥,带有密码,id_lynx没有密码,因为我希望它可用于 cron 作业(它以相当受限制的用户身份登录,不用担心),特别是 git 同步。对于这些后台 git 推送和拉取,我在我的 中设置了一个 SSH 主机条目,~/.ssh/config指定id_lynxIdentityFile。此外,Xfce 启动时gpg-agent支持 ssh-agent。

现在,当我尝试使用此主机通过 SSH 连接时,它只关心id_lynx,我得到一个 pinentry 弹出窗口,gpg-agent要求我输入 的密码id_rsa。如果我点击取消按钮,连接会正常进行(应该如此),但这显然不是一个好的最终解决方案,尤其是在 cron 作业中使用时。

如果我杀死它gpg-agent,一切都会按预期工作,但除了这个问题之外,我喜欢使用图形化的 ssh-agent 实现。

那么,我怎样才能阻止 SSH 和 gpg-agent 尝试获取它不会使用的密钥的密码?

谢谢。

答案1

尝试使用 ssh -v(或 -vvv)并观察 ssh 密钥的尝试顺序。如果 id_rsa 先出现,则说明您的 ssh_config 存在问题。

尝试使用 ssh -i /path/to/id_lynx 如果有效,请检查您的 ssh_config

IdentityFile <- 应该是完整指定的路径,

身份仅限

man 5 ssh_config 说:

   IdentitiesOnly
         Specifies that ssh(1) should only use the authentication identity
         files configured in the ssh_config files, even if ssh-agent(1) or
         a PKCS11Provider offers more identities.  The argument to this
         keyword must be ``yes'' or ``no''.  This option is intended for
         situations where ssh-agent offers many different identities.  The
         default is ``no''.

这应该可以解决问题。如果没有,请调查 ssh -vvv 的输出,看看您的 ssh_config 是否被使用。

相关内容