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