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

Már*_*les 25 ssh logging

通过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...
Run Code Online (Sandbox Code Playgroud)

我一直在试图弄清楚这个 SHA256 信息是什么,但我找不到任何似乎匹配的信息。首先,我认为这可能是来自我正在连接的客户端的一些信息(公钥、指纹、散列主机名等),但我没有找到任何需要确认的信息,无论是在服务器端。

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

谢谢你。

Jos*_*ths 40

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

这是验证它的方法:

ssh-keygen -lf .ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

或者,无需验证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
Run Code Online (Sandbox Code Playgroud)

  • 原来你可以使用`ssh-keygen -lf .ssh/id_rsa.pub` (11认同)
  • 只是附加信息:相同的命令适用于授权密钥: *ssh-keygen -lf .ssh/authorized_keys* (3认同)
  • 我认为你的评论是一个单独的、全面的更好的答案,你应该单独添加。 (2认同)