通过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
非常感谢。