在旧的 shell 会话中, 中的 ssh 密钥数量往往大到足以使服务器身份验证失败,这仅仅是因为客户端只是按照 FIFO 方式向其抛出密钥。即使中为相关主机指定了ssh-agent
该指令,它似乎也会这样做。IdentityFile
~/.ssh/config
为了解决这个问题,我IdentitiesOnly
在上述文件中添加了指令。但是现在,当我尝试连接到服务器时,系统会提示我输入 ssh 密钥密码。尽管密钥位于 中,但仍然如此ssh-agent
。当我从配置文件中删除时IdentitiesOnly
,不会出现任何提示,并且会授予访问权限。
所以,我的问题是,如何确保向给定的服务器提供正确的密钥(而不是其他密钥)和避免被提示输入该密钥的密码?
答案1
我找到了解决方案这篇博文。
本质上,这个想法是在声明中引用公钥,而不是私钥IdentityFile
。因此,主机的最终配置foo
将如下所示:
Host foo
Hostname foo.org
User admin
IdentityFile ~/.ssh/foo.pub
IdentitiesOnly yes