如何从 ssh 密钥对计算 GitLab 部署密钥指纹

如何从 ssh 密钥对计算 GitLab 部署密钥指纹

在 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

相关内容