在 GitLab 存储库设置中查看部署密钥时,密钥有一个“名称”,还有某种指纹。指纹如下所示:
2b:be:a7:7f:44:64:89:8d:e3:f7:ea:3c:12:c9:e5:e7
我正在尝试找出这个密钥对与我的哪个 ssh 密钥对相对应。如何从现有的 ssh 密钥对计算出这个字符串?
答案1
SSH 密钥指纹只是整个公钥块(AAAA...=
id_rsa.pub 中的大块)的哈希值。首先对该字段进行 Base64 解码,然后计算其 MD5 或 SHA256 哈希值,最后以十六进制(对于 MD5)或 Base64(对于 SHA256)打印。
您可以手动计算指纹......
cat id_rsa.pub | awk '{print $2}' | base64 -d | md5sum
cat id_rsa.pub | awk '{print $2}' | base64 -d | openssl dgst -md5 -c
awk '{print $2}' id_rsa.pub | base64 -d | openssl dgst -sha256 -binary | base64
...或者让 OpenSSH 来执行此操作(更方便,因为它也接受私钥文件):
ssh-keygen -l -f <keyfile>
较新的 OpenSSH 版本改用 SHA256 哈希并将指纹编码为 Base64,而不是十六进制。要强制使用新的 OpenSSHssh-keygen要显示 MD5 指纹,只需添加-E md5
:
ssh-keygen -l -f <keyfile> -E md5