SSH 登录时的主机密钥指纹与密钥生成时的指纹不同

SSH 登录时的主机密钥指纹与密钥生成时的指纹不同

请原谅我的长篇大论,我不确定其中有多少是相关的。

计算机“S”和“C”位于 LAN 上 - 它们在同一个网段上具有不可路由的 IPv4 地址,并且防火墙阻止任何传入的连接尝试。

“S” 安装了 Ubuntu 16.04.x LTS 服务器、无头服务器、openssh 服务器和静态 IP。“S” 上的其他所有内容仍为默认设置。

在“C”上使用 OpenSSH 客户端:

$ ssh [email protected]

我接受了提供的主机密钥,一切按预期运行。在 SI 的 shell 上运行 apt-get update 和 ugprade。

现在我在 C 上配置客户端,设置宽松,使用密钥或密码验证。我在 C 上生成密钥,ed25519 和 RSA。

然后再次登录 S,欢迎消息显示需要重新启动。推迟我将所有默认服务器密钥移动到备份目录并生成新密钥(以控制密钥生成器设置并确保只有强密钥存在)。这按预期工作并显示每个密钥的 ASCII 象形图。

现在重新启动 S,终止来自 C 的会话。然后再次登录 S,现在它的主机密钥当然已经更改,由于我的配置很谨慎,出现了一条可怕的消息,我必须从 ~/.ssh/known_hosts 中删除旧主机密钥。所以我这样做了,然后开始再次登录。

正如预期的那样,ASCII 艺术和指纹有所不同。但它们与我生成密钥时显示的不一致。

我继续登录,因为我相信这种情况(防火墙等)。现在在 S 上,输出

$ ssh-keygen -lv -f ssh_host_ed25519_key.pub

仍然和我生成密钥时一样:

256 SHA256:<longStringTheFirstHere> root@S (ED25519)
+--[ED25519 256]--+
<ASCII art follows>

但与此同时,我可以从另一个 shell 再次登录,并且显示的主机密钥是:

256 SHA256:<longStringTheSecondHere> root@S (ED25519)
+--[ED25519 256]--+
<different ASCII art>

所以我想了解为什么会有这种差异。是不是出了什么问题?是否存在安全问题?更有可能是我遗漏了什么,但我想知道是什么。

我发现了许多相关主题的页面,但没有找到关于这个问题的页面。

答案1

解决了我自己的问题。线索就在 ASCII 艺术的底部。在此命令的输出中:

$ ssh-keygen -lv -f ssh_host_ed25519_key.pub

底部是:

+----[SHA256]-----+

当服务器在登录时出示其密钥时,ASCII 艺术的底部显示:

+-----------------+

man ssh-keygen显示-E允许您指定哈希算法的参数。使用SHA256它和不使用它时产生的结果相同,但使用md5它时产生的输出与登录时看到的输出相同:

$ ssh-keygen -lv -E md5 -f ssh_host_ed25519_key.pub

所以现在我确信没有什么问题,指纹只是因为哈希算法而不同,而且毕竟它是同一个密钥。

相关内容