Ssh

阻止 ssh 客戶端提供它可以找到的所有公鑰?

  • June 12, 2013

像大多數係統管理員一樣,我一直使用 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).

基本上,指定IdentityFiles 只是將密鑰添加到已呈現給客戶端的 SSH 代理的目前列表中。

嘗試在文件底部使用 this 覆蓋此行為.ssh/config

Host *
 IdentitiesOnly yes

您還可以在主機級別覆蓋此設置,例如:

Host foo
 User bar
 IdentityFile /path/to/key
 IdentitiesOnly yes

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