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

rla*_*ter 2 fingerprint ssh-keys gitlab

在 GitLab 存储库设置中查看 Deploy Keys 时,这些键有一个“名称”和某种指纹。指纹看起来像这样:

2b:be:a7:7f:44:64:89:8d:e3:f7:ea:3c:12:c9:e5:e7
Run Code Online (Sandbox Code Playgroud)

我试图找出这个对应于我的哪个 ssh 密钥对。如何从现有的 ssh 密钥对计算此字符串?

use*_*686 5

SSH 密钥指纹只是整个公钥块(AAAA...=id_rsa.pub 中的大块)的散列。首先对该字段进行 Base64 解码,然后计算其 MD5 哈希值,并以十六进制打印。

您可以手动计算指纹...

cat id_rsa.pub | awk '{print $2}' | base64 -d | md5sum

cat id_rsa.pub | awk '{print $2}' | base64 -d | openssl dgst -md5 -c
Run Code Online (Sandbox Code Playgroud)

...或要求 OpenSSH 执行此操作(更方便,因为它也会接受私钥文件):

ssh-keygen -l -f <keyfile>
Run Code Online (Sandbox Code Playgroud)

较新的 OpenSSH 版本改为使用 SHA256 哈希并将指纹编码为 Base64,而不是十六进制。要强制使用新的 OpenSSH ssh-keygen向您显示 MD5 指纹,只需添加-E md5

ssh-keygen -l -f <keyfile> -E md5
Run Code Online (Sandbox Code Playgroud)