计算 RSA 密钥指纹

我需要对 GitHub 进行 SSH 密钥审核,但是我不确定如何找到我的 RSA 密钥指纹。我最初遵循的是在 Linux 上生成 SSH 密钥的指南。

查找当前 RSA 密钥指纹需要输入什么命令?

答案

$ ssh-keygen -lf /path/to/ssh/key
$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)
$ ssh-keygen -E md5 -lf <fileName>
$ find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'
ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)
ssh-keygen -E md5 -lf ~/.ssh/id_dsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

要在 Ubuntu 上查看密钥,只需在终端上输入以下命令:

ssh-add -l

您将得到如下输出: 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23 yourName @ ubuntu(RSA)

但是,如果出现类似错误; Could not open a connection to your authentication agent.
这意味着 ssh-agent 没有运行。您可以使用以下命令启动 / 运行它: ssh-agent bash (感谢注释中的 @Richard),然后重新运行ssh-add -l

密钥对(私钥和公钥)将具有相同的指纹;因此,在您忘记了哪个私钥属于哪个公钥的情况下,可以通过比较指纹来找到匹配项。

Marvin Vinto 投票最多的答案提供了公共 SSH 密钥文件的指纹。也可以查询相应的专用 SSH 密钥的指纹,但是需要更长的步骤,如下所示。

  1. 加载 SSH 代理(如果尚未加载)。最简单的方法是调用

    $ ssh-agent bash

    要么

    $ ssh-agent tcsh

    (或您使用的其他外壳)。

  2. 加载要测试的私钥:

    $ ssh-add /path/to/your-ssh-private-key

    如果密钥受密码保护,则将要求您输入密码。

  3. 现在,正如其他人所说,键入

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)

    fd:bc:...是您要使用的指纹。如果有多个密钥,将打印多行,最后一行包含最后加载的密钥的指纹。

  4. 如果要停止该代理(即,如果您调用了上面的步骤 1),则只需在 shell 上键入 “exit”,然后您将在加载 ssh 代理之前回到 shell 上。

我没有添加新信息,但是希望这个答案对所有级别的用户都清楚。

$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin
4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)

在这里从 AWS 论坛中复制内容,因为我发现它对我的用例有用 - 我想检查哪些密钥与我导入到 AWS 的密钥匹配

openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c

其中: primary.pem是要检查的私钥

$ ssh-add -l

在 Windows 上,如果您正在运行PuTTY / Pageant,则将 PuTTY(.ppk)密钥加载到 Pageant 中时,将列出指纹。如果您忘记了正在使用哪一个,这将非常有用。

在此处输入图片说明

fingerprint() {
    pubkeypath="$1"
    ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5-
}
$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9
ssh-add -l
ssh-agent sh -c 'ssh-add; ssh-add -l'
ssh-agent sh -c 'ssh-add; ssh-add -L'