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 一直要求我輸入密碼來解密密鑰。為什麼?當我更改配置以使用代理中的另一個密鑰強制執行時,它起作用了。
事實證明,即使連接到主機只需要私鑰,使用也
ssh-agent
需要公鑰才能正常工作。我猜 SSH 通過其公共部分辨識代理中可用的密鑰 - 沒有它們,它認為密鑰不可用。另一個密鑰起作用的原因是我在私鑰旁邊有一個相應的公鑰 - 它看起來像這樣:
~/.ssh/keys ├── id_ed25519 ├── id_rsa └── id_rsa.pub
添加公鑰
id_ed25519.pub
(對應於私鑰id_ed25519
)後,一切都按預期開始工作。