Ssh

SSH 忽略代理中的密鑰並不斷詢問密鑰解密密碼

  • March 14, 2019

在我的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 一直要求我輸入密碼來解密密鑰。為什麼?當我更改配置以使用代理中的另一個密鑰強制執行時,它起作用了。

事實證明,即使連接到主機只需要私鑰,使用也ssh-agent需要公鑰才能正常工作。我猜 SSH 通過其公共部分辨識代理中可用的密鑰 - 沒有它們,它認為密鑰不可用。

另一個密鑰起作用的原因是我在私鑰旁邊有一個相應的公鑰 - 它看起來像這樣:

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

添加公鑰id_ed25519.pub(對應於私鑰id_ed25519)後,一切都按預期開始工作。

引用自:https://serverfault.com/questions/958247