如果 host_keys 相同,為什麼連線時 SSH 主機金鑰不同?

如果 host_keys 相同,為什麼連線時 SSH 主機金鑰不同?

有 3 台機器:A(從我連接到 B 和 C 的地方)、B 和
C。 ,相同的sshd_config 檔案)。

在 C 上,known_hosts 檔案如下所示:

C:~/.ssh # grep B *
C:~/.ssh # grep A *
known_hosts:ssh-rsa xxxx...xxxx
C:~/.ssh # 

當我們嘗試從 C 連線到 A 時,「A」會提供它的 RSA 主機金鑰。
當我們嘗試從 C 連接到 B 時,「B」會提供它的 ECDSA 主機金鑰。

問題:為什麼? 「A」和「B」伺服器應該同時提供它們的 RSA SSHD 主機金鑰,這不是合乎邏輯的嗎?

答案1

首次學習主機金鑰時,首選 ECDH/ECDSA 金鑰。由於主機 C 已經知道主機 A 的 RSA 金鑰,因此它會繼續使用該金鑰。但由於主機 C 對主機 B 的金鑰一無所知,因此使用 ECDH/ECDSA。

(我參考了5.7 的發行說明,當 ECDH/ECDSA 引入時)。

我收到的問題: 兩把鑰匙都需要嗎? 嗯,是。並非每個 SSH 安裝都支援 ECDSA,因此您需要 RSA。 (例如,putty還沒有做ECDSA) 如果我只有 ECDSA 會怎樣? 取決於誰試圖聯繫您。如果他們支持 ECDSA,那麼一切都會按預期進行。如果他們不這麼做,你就會遭遇某種失敗。 哪一個比較好? 我個人不知道。 ECDSA 需要較少的馬力,因此我發現它在較舊的硬體上更加敏捷。由於 OpenSSH 比 RSA 更喜歡它,我猜開發人員認為 ECDSA 更好。

答案2

您嘗試連接的伺服器是否具有相同/etc/ssh/sshd_config和/或 OpenSSH(和 OpenSSL)版本(有關相同配置的位元和您連接到的位置似乎有點矛盾)? ECDH/ECDSA 是在 OpenSSH 5.7p1 中引入的,因此如果一台伺服器較舊,它將忽略金鑰檔案。

相關內容