我需要为GitHub进行SSH密钥审核,但我不确定如何找到我的RSA密钥指纹。我最初遵循指南在Linux上生成SSH密钥。
我需要输入什么命令才能找到我当前的RSA密钥指纹?
答案 0 :(得分:1130)
运行以下命令以检索SSH密钥的SHA256指纹(-l
表示“列表”而不是创建新密钥,-f
表示“文件名”):
$ ssh-keygen -lf /path/to/ssh/key
例如,在我的机器上,我运行的命令是(使用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获取GitHub(MD5)指纹格式,请运行:
$ ssh-keygen -E md5 -lf <fileName>
奖金信息:
ssh-keygen -lf
也适用于known_hosts
和authorized_keys
个文件。
要在Linux / Unix / OS X系统上查找大多数公钥,请运行
$ find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'
(如果你想看到其他用户的homedirs,你必须是root或sudo。)
ssh-add -l
非常相似,但列出了添加到代理的密钥的指纹。 (OS X用户注意到,通过Keychain进行神奇无密码SSH与使用ssh-agent不同。)
答案 1 :(得分:641)
较新的SSH命令会将指纹列为 SHA256 键。
例如:
JTable
如果您需要将其与旧指纹进行比较,还需要指定使用 MD5 指纹哈希功能。
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)
更新......是......是的......我知道......不应再使用SSH的DSA密钥,而应使用旧的RSA密钥或更新的黄道键。
那些继续编辑我在上面使用的命令的'管理员'。停止改变它!您使命令和结果输出不匹配!
答案 2 :(得分:25)
要在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
答案 3 :(得分:16)
密钥对(私钥和公钥)具有相同的指纹;因此,如果您无法记住哪个私钥属于哪个公钥,请通过比较其指纹来查找匹配。
Marvin Vinto投票最多的回答提供了 public SSH密钥文件的指纹。也可以查询相应私有 SSH密钥的指纹,但需要更长的一系列步骤,如下所示。
如果您尚未加载SSH代理,请加载SSH代理。最简单的方法是调用
$ ssh-agent bash
或
$ ssh-agent tcsh
(或您使用的其他shell)。
加载您要测试的私钥:
$ ssh-add /path/to/your-ssh-private-key
如果密钥受密码保护,系统会要求您输入密码。
现在,正如其他人所说,输入
$ 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:...
是你追求的指纹。如果有多个键,则会打印多行,最后一行包含最后加载的键的指纹。
如果你想停止代理(即,如果你调用了上面的第1步),那么只需输入`exit&#39;在shell上,你可以在加载ssh代理之前回到shell上。
我不会添加新信息,但希望这个答案对所有级别的用户都很清楚。
答案 4 :(得分:12)
密钥在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)
答案 5 :(得分:10)
在此处重新生成来自AWS forums的内容,因为我发现它对我的用例很有用 - 我想检查哪些密钥与我导入AWS的密钥相匹配
openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c
其中:
- primary.pem
是检查的私钥
答案 6 :(得分:9)
$ ssh-add -l
也适用于Mac OS X v10.8(山狮) - v10.10(优胜美地)。
它还支持选项-E
以指定指纹格式,因此如果需要MD5(经常使用它,例如GitHub),只需在命令中添加-E md5
。 / p>
答案 7 :(得分:7)
这是我用来获取用于创建DigitalOcean水滴的SSH密钥指纹的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
答案 8 :(得分:5)
在Windows上,如果您正在运行PuTTY / Pageant,则在将PuTTY(.ppk)密钥加载到Pageant中时会列出指纹。如果您忘记了自己正在使用哪一个,这非常有用。
答案 9 :(得分:2)
如果您的SSH代理正在运行,则为
ssh-add -l
列出所有身份的RSA指纹,或列出公钥的-L
。
如果您的代理未运行,请尝试:
ssh-agent sh -c 'ssh-add; ssh-add -l'
对于您的公钥:
ssh-agent sh -c 'ssh-add; ssh-add -L'
如果您收到消息:&#39; 代理没有身份。&#39;,则必须先ssh-keygen
生成您的RSA密钥。
答案 10 :(得分:0)
Google Compute Engine在Linux实例的串行输出中显示SSH主机密钥指纹。 API可以从GCE获取数据,无需登录实例。
我没有在其他任何地方找到它,而是从串行输出中找到它。我认为指纹应该在程序员友好的地方。
但是,它似乎取决于实例的类型。我正在使用Debian 7(Wheezy)f1-micro的实例。
答案 11 :(得分:0)
有时您在~/.ssh
目录中可以有一堆密钥,并且不知道哪个密钥与GitHub / Gitlab / etc显示的指纹匹配。
以下是显示~/.ssh
目录中所有密钥的密钥文件名和MD5指纹的方法:
cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;
(有关参数的含义,请参见this answer about the find
command。
请注意,属于一个密钥的私有/公共文件具有相同的指纹,因此您将看到重复的文件。
答案 12 :(得分:-1)
要在第一次连接之前检查远程SSH服务器,您可以查看www.server-stats.net/ssh/以查看服务器的所有SHH密钥,以及密钥何时知晓。
这不是SSL证书,但在第一次连接到任何SSH服务器之前肯定是必须做的。
答案 13 :(得分:-1)
在Fedora上,我执行[locate〜/ .ssh]告诉我密钥是@
/root/.ssh
/root/.ssh/authorized_keys