为什么 ssh 指纹现在以 Base64 格式而不是十六进制给出?

为什么 ssh 指纹现在以 Base64 格式而不是十六进制给出?

我看到一个老问题显示,当ssh连接到服务器时,会显示十六进制指纹。

为什么现在以base64格式给出?有什么好处?

我知道MD5已损坏,现在默认值是sha256,但是至于指纹格式,base64 编码和十六进制字符串是/表示相同的东西。那么改变格式有什么好处呢?

答案1

改变的不仅仅是输出格式,还有用于生成指纹的算法。以前是MD5,现在是SHA256。 MD5 在很多方面都被破坏了,并且一般性建议就是使用SHA256之类的。这样的改变由来已久。

发行说明:

  • 将 FingerprintHash 选项添加到ssh(1)sshd(8),并将等效的
    命令行标志添加到其他工具以控制用于关键指纹的算法。默认值从 MD5 更改为 SHA256,格式从十六进制更改为 base64。

    指纹现在预先考虑了哈希算法。
    新格式的示例:SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE
    请注意,可视主机密钥也会有所不同。

你仍然可以获得旧的输出:

ssh -o FingerprintHash=md5 ...

SHA256 哈希值有 256 位输出,转换为十六进制的 64 个字符。这是十六进制 32 字符 MD5 哈希长度的两倍。 Base64 编码的 SHA256 字符长度仅为 44 个字节(=无论如何,最后一个填充被省略)。

相关内容