Openssh
OpenSSH 的 SSH 客戶端不遵守 IdentityFile 設置的順序
如何指定 OpenSSH 的 SSH 客戶端(OpenSSH_7.5p1,OpenSSL 1.0.2k 2017 年 1 月 26 日;Git for Windows v2.11.1)向 SSH 兼容的守護程序(例如 Apache Mina SSHD(Gerrit程式碼審查服務)。我的意圖是在回退到 RSA 之前嘗試使用 Ed25519 公鑰/私鑰對進行身份驗證。
給定使用者主目錄下的以下標準 Ed25519 和 RSA 公鑰/私鑰對:
~/.ssh/id_ed25519{,.pub}
~/.ssh/id_rsa{,.pub}
以及使用者的 SSH 配置文件 (~/.ssh/config) 中的以下主機部分:
Host foobar foobar.example.com Hostname foobar.example.com IdentityFile ~/.ssh/id_ed25519 Host * IdentityFile ~/.ssh/id_ed25519 IdentityFile ~/.ssh/id_rsa
在調試模式下測試 SSH 連接時:
$ ssh -Tv bob@foobar debug1: Reading configuration data ~/.ssh/config debug1: ~/.ssh/config line 49: Applying options for foobar debug1: ~/.ssh/config line 63: Applying options for * debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: ~/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: Offering ED25519 public key: ~/.ssh/id_ed25519 debug1: Server accepts key: pkalg ssh-ed25519 blen 51 debug1: Authentication succeeded (publickey).
我可以看到 OpenSSH 的 SSH 客戶端首先提供了 RSA 公鑰/私鑰對。但為什麼不先 Ed25519 呢?
添加
IdentitiesOnly
選項。如果沒有這個選項,SSH 會首先嘗試可用的預設 ssh 密鑰:id_rsa
,id_dsa
,id_ecdsa
. 要更改此行為,請將您的配置替換為以下配置:Host foobar foobar.example.com Hostname foobar.example.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes Host * IdentityFile ~/.ssh/id_ed25519 IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes