SSH 忽略代理中的密钥并不断要求输入密钥解密密码

SSH 忽略代理中的密钥并不断要求输入密钥解密密码

在我的 中ssh_config,我已将 SSH 配置为在连接到主机时使用特定密钥。我希望 SSH 尝试仅有的这个密钥,而不是它可能找到的任何其他密钥(在 ssh 代理或其他位置),所以我IdentitiesOnly也指定了。

Host *.foobar.com
   IdentityFile ~/.ssh/keys/id_ed25519
   IdentitiesOnly yes

现在,密钥已受密码保护,以提高安全性。为了避免每次都输入密码,我已将其添加到ssh-agent(以及其他一些密钥):

$ ssh-add -l
256 SHA256:1seMMJNjoexbRqNlVDe9kxkWm8s7fKAEuo+dP+hYut0 (ED25519)
2048 SHA256:p5SXMJNjoexbRqNl8roRamdzz+HFVlRKxtQoEW3vLu0 (RSA)

但是,当我尝试连接时,SSH 不断要求我输入密码来解密密钥。为什么?当我将配置更改为强制使用代理中的另一个密钥时,它就起作用了。

答案1

事实证明,尽管连接主机只需要私钥,但使用ssh-agent公钥才能正常工作。我猜 SSH 是通过公钥部分来识别代理中可用的密钥的 - 如果没有公钥部分,它会认为密钥不可用。

另一个密钥起作用的原因是因为我在私钥旁边有一个相应的公钥 - 它看起来像这样:

~/.ssh/keys
├── id_ed25519
├── id_rsa
└── id_rsa.pub

添加公钥id_ed25519.pub(对应私钥id_ed25519)后,一切都开始按预期工作。

相关内容