如果 host_keys 相同,为什么连接时 SSH 主机密钥不同?

如果 host_keys 相同,为什么连接时 SSH 主机密钥不同?

有 3 台机器:A(从我连接到 B 和 C 的地方)、B 和 C。B
和 C 具有相同的 SSHD 主机密钥(它们已被复制,因此它们 100% 相同,SSHD 也已重新启动) ,相同的 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 中引入的,因此如果一台服务器较旧,它将忽略密钥文件。

相关内容