【问题标题】:SSH server key verification: How to avoid 2 different key fingerprint formats?SSH 服务器密钥验证:如何避免 2 种不同的密钥指纹格式?
【发布时间】:2016-04-04 14:35:00
【问题描述】:

在与新的 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)

如何确保在两种情况下获得相同的格式,以便轻松比较?

【问题讨论】:

    标签: authentication ssh public-key


    【解决方案1】:

    这是openssh-6.8 的最新更改,因为我们都知道 md5 已损坏,我们应该开始使用更新的东西。但是过渡并不是那么顺利,因此您应该注意新选项FingerprintHash。您可以存储在您的 ssh_config 中,或者在连接到服务器时仅在命令行中提供:

    ssh -o FingerprintHash=md5 server
    

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

    【讨论】:

      【解决方案2】:

      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 指纹的全部好处。我在https://whatsecurity.nl/verifying_ssh_fingerprints_in_new_form.html 上写了这个答案的更广泛的版本。

      【讨论】:

        猜你喜欢
        • 2017-06-15
        • 2023-03-16
        • 2022-01-19
        • 2016-07-23
        • 2015-08-31
        • 1970-01-01
        • 2018-12-16
        • 1970-01-01
        • 2017-04-28
        相关资源
        最近更新 更多