我看到一个老问题显示,当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 个字节(=
无论如何,最后一个填充被省略)。