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

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

通过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 信息是什么,但我找不到任何似乎匹配的东西。一开始我以为它可能是来自我连接的客户端的一些信息(公钥、指纹、哈希主机名等),但我没有找到任何可以确认的东西,无论是在服务器端还是在服务器端。

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

谢谢。

答案1

这是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

答案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

非常感谢。

相关内容