Authentication SSH服务器密钥验证:如何避免2种不同的密钥指纹格式?

Authentication SSH服务器密钥验证:如何避免2种不同的密钥指纹格式?,authentication,ssh,public-key,Authentication,Ssh,Public Key,在与新Linux服务器(Ubuntu)的第一次SSH连接过程中,我看到一个密钥指纹,格式如下: ECDSA key fingerprint is SHA256:Dvj5iH81LekYL2qA6VY1NkzXTB1TSkH+yc3kVclgGBc. Are you sure you want to continue connecting (yes/no)? yes 当我想将这个指纹与我自己生成的指纹进行比较时,我使用 ssh-keygen -l -f /etc/ssh/ssh_host_ecd

在与新Linux服务器(Ubuntu)的第一次SSH连接过程中,我看到一个密钥指纹,格式如下:

ECDSA key fingerprint is SHA256:Dvj5iH81LekYL2qA6VY1NkzXTB1TSkH+yc3kVclgGBc.
Are you sure you want to continue connecting (yes/no)? yes
当我想将这个指纹与我自己生成的指纹进行比较时,我使用

ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
不幸的是,这会以不同的格式输出指纹,例如:

256 b1:53:22:1c:71:5e:11:f1:6c:a0:97:78:42:17:1b:b0  root@Ubuntu-1404-trusty-64-minimal (ECDSA)
如何确保在这两种情况下获得相同的格式,以便轻松进行比较?

这是最近的变化,因为我们都知道md5已损坏,我们应该开始使用更新的格式。但是转换不是很顺利,因此您应该注意新选项
FingerprintHash
。您可以存储在
ssh\u config
中,或者在连接到服务器时仅在命令行上提供:

ssh -o FingerprintHash=md5 server

您无法获取服务器密钥的SHA256指纹,因为服务器可能有旧版本的openssh,目前不支持此操作。

Jakuje的答案将允许您比较哈希,但它强制您继续使用MD5哈希进行验证。MD5已被证明容易受到碰撞攻击,这使得它成为指纹验证的一个糟糕选择

更安全的方法是手动在服务器上生成SHA256指纹。您可以通过键入以下内容来完成此操作:

awk '{print $2}' /etc/ssh/ssh_host_ecdsa_key.pub | base64 -d | sha256sum | awk '{print $1}' | xxd -r -p | base64 | rev | cut -c 2- | rev
使用此方法,您可以验证指纹,同时获得使用SHA256指纹的全部好处。我在上面写了一个更广泛的版本