Ssh
阻止 ssh 客戶端提供它可以找到的所有公鑰?
像大多數係統管理員一樣,我一直使用 openssh。我有大約十幾個 ssh 密鑰,我喜歡為每個主機設置不同的 ssh 密鑰。但是,當我第一次連接到主機時,這會導致問題,而我只有一個密碼。我只想使用密碼連接到主機,在這種情況下沒有 ssh 密鑰。但是 ssh 客戶端將提供我的所有公鑰
~/.ssh/
(我通過查看 的輸出知道這一點ssh -v
)。由於我有這麼多,我會因為太多的身份驗證失敗而斷開連接。有沒有辦法告訴我的 ssh 客戶端不要提供所有的 ssh 密鑰?
這是根據手冊頁的預期行為
ssh_config
:IdentityFile Specifies a file from which the user's DSA, ECDSA or DSA authentica‐ tion identity is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2. Additionally, any identities represented by the authentication agent will be used for authentication. [...] It is possible to have multiple identity files specified in configu‐ ration files; all these identities will be tried in sequence. Mul‐ tiple IdentityFile directives will add to the list of identities tried (this behaviour differs from that of other configuration directives).
基本上,指定
IdentityFile
s 只是將密鑰添加到已呈現給客戶端的 SSH 代理的目前列表中。嘗試在文件底部使用 this 覆蓋此行為
.ssh/config
:Host * IdentitiesOnly yes
您還可以在主機級別覆蓋此設置,例如:
Host foo User bar IdentityFile /path/to/key IdentitiesOnly yes