我如何find我的RSA密钥指纹?

我需要为GitHub执行ssh密钥审计,但是我不确定如何find我的RSA密钥指纹。 我原本是遵循一个指导来做一个由linode主持的Ubuntu 10.04盒子的设置。

如果使用Putty远程login,我需要input什么命令才能find当前的RSA密钥指纹?

运行以下命令来检索您的SSH RSA指纹( -l “list”而不是创build新密钥, -f “filename”):

 $ ssh-keygen -lf /path/to/ssh/key 

例如,在我的机器上,我跑的命令是:

 $ ssh-keygen -lf ~/.ssh/id_rsa.pub 

具体的例子(如果你使用RSA公钥):

 $ 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,如果您想要与旧版本相同的格式,请运行ssh-keygen -E md5 -lf <fileName> (谢谢Lloyd Dewolf)

奖励信息:

ssh-keygen -lf也适用于known_hostsauthorized_keys文件。

使用find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'find大部分公共的Linux / Unix / OSX系统find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts' (如果你想看到其他用户的homedirs,你必须是根或sudo。)

ssh-add -l非常相似,但列出了添加到代理的密钥的指纹。 (OSX用户注意到,通过Keychain的无恶意密码的ssh和使用ssh-agent不一样。)

额外….

较新的SSH命令将列出指纹作为SHA256密钥。

例如

 ssh-keygen -lf ~/.ssh/id_rsa.pub 1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA) 

如果您需要将其与旧指纹进行比较,则还需要指定使用md5指纹散列函数。

 ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub 2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA) 

还有: -E sha1

要在Ubuntu上查看您的密钥,只需在terminal上input以下命令:

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

密钥对(私钥和公钥)将具有相同的指纹; 所以在这种情况下,你不记得哪个私钥属于哪个公钥,通过比较指纹find匹配。 Marvin Vinto提供的答案最多,提供了公钥 ssh密钥文件的指纹。 也可以查询相应的私钥 ssh密钥的指纹,但是需要更长的一系列步骤,如下所示。

1)加载SSH代理,如果没有的话。 最简单的方法是调用

 $ ssh-agent bash 

要么

 $ ssh-agent tcsh 

(或者你使用的其他shell)。

2)加载你想testing的私钥:

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

如果密码被密码保护,您将被要求input密码。

3)现在,正如别人所说,input

 $ 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中input`exit',然后在加载ssh代理之前就会回到shell。

我不添加新的信息,但希望这个答案是清楚的各级用户。

 $ ssh-add -l 

也将在Mac OSX 10.8-10.10上运行

在Windows上,如果您正在运行Putty / Pageant,则在将putty(.ppk)键加载到pageant中时会列出指纹。 如果你忘记了你正在使用哪一个,这很有用。

在这里输入图像说明

这是我用来获得我的SSH密钥指纹创build数字海洋飞沫的shell函数:

 fingerprint() { pubkeypath="$1" ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5- } 

把它放在你的~/.bashrc ,然后你可以得到如下的指纹:

 $ fingerprint ~/.ssh/id_rsa.pub d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9 

在这里重现AWS 论坛的内容,因为我发现它对我的用例非常有用 – 我想检查哪些密钥与我已经导入AWS的密钥匹配

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

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

最快的方式,如果你的密钥在SSH代理:

 $ 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) 

如果你的SSH代理正在运行,它是:

 ssh-add -l 

列出所有身份的RSA指纹,或-L列出公钥。

如果您的代理没有运行,请尝试:

 ssh-agent sh -c 'ssh-add; ssh-add -l' 

和你的公钥:

 ssh-agent sh -c 'ssh-add; ssh-add -L' 

如果你得到这样的信息:“ 代理人没有身份。 ',那么你必须先通过ssh-keygen生成你的RSA密钥。

要在首次连接之前检查远程SSH服务器,可以查看www.server-stats.net/ssh/以查看服务器的所有SHH密钥,以及从什么时候知道密钥。

这不是一个SSL证书,但绝对是第一次连接到任何SSH服务器之前必须做的。

Google Compute Engine在Linux实例的串行输出中显示SSH主机密钥指纹。 API可以从GCE获取数据,无需login实例。

除了串口输出,我没有在其他地方find它。 我认为指纹应该在更多的程序员友好的地方。

编辑:它似乎取决于实例的types,我正在使用Debian Wheezy f1-micro的实例