auth.log中的sshd条目附带的SHA256是什么?


20

通过ssh登录时,可以在auth.log上看到以下内容:

Dec 14 16:29:30 app sshd[22781]: Accepted publickey for dev from XXX.XXX.XX.XXX port XXXXX ssh2: RSA SHA256:pO8i...

我一直在尝试找出SHA256的信息是什么,但是找不到任何看起来匹配的信息。首先,我认为这可能是我正在连接的来自客户端的一些信息(公用密钥,指纹,哈希主机名等),但是我没有找到任何要确认的信息,服务器端也没有。

我找到的最接近的信息在这里,但是当它说“这是一个使用密钥进行身份验证的示例。它显示了有缺陷的指纹(可能是拼写错误)作为base64中的SHA256哈希”时,我不明白。 ,因为我还没有找到任何相应的按键指纹。

谢谢。

Answers:


27

这是SHA256用于认证SSH会话的RSA公钥的哈希。

这是验证方法:

ssh-keygen -lf .ssh/id_rsa.pub

或者,在没有以下情况的情况下进行验证ssh-keygen

  • 删除ssh-rsa前缀
  • 使用以下命令将密钥解码为字节 base64
  • 获取SHA256密钥的哈希值(以字节为单位,而不是十六进制)
  • 使用以下代码对字节进行编码 base64

例如:

cat .ssh/id_rsa.pub    |
    awk '{ print $2 }' | # Only the actual key data without prefix or comments
    base64 -d          | # decode as base64
    sha256sum          | # SHA256 hash (returns hex)
    awk '{ print $1 }' | # only the hex data
    xxd -r -p          | # hex to bytes
    base64               # encode as base64

11
事实证明,您可以使用ssh-keygen -lf .ssh/id_rsa.pub
约书亚·格里菲思

2
我认为您的评论是一个单独且全面的更好的答案,您应该单独添加。
休W

1
+1以添加ssh-keygen -lf .ssh/id_rsa.pub为单独的答案。比手动编码更好。
伊利亚·鲍比

2

在macOS 10.13.6上也有同样的问题,您的答案只需要进行一些调整:

cat .ssh/id_rsa.pub    |
    awk '{ print $2 }' | # Only the actual key data without prefix or comments
    base64 -D          | # decode as base64
    shasum -a 256      | # SHA256 hash (returns hex)
    awk '{ print $1 }' | # only the hex data
    xxd -r -p          | # hex to bytes
    base64               # encode as base64

非常感谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.