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

Ric*_*ick 3 ssh

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

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

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

mur*_*uru 8

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

发行说明

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

    指纹现在具有哈希算法。
    新格式的示例:SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE
    请注意,可视主机键也将有所不同。

您仍然可以获得旧的输出

ssh -o FingerprintHash=md5 ...
Run Code Online (Sandbox Code Playgroud)

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