我需要对github进行ssh密钥审计,但我不确定如何找到我的rsa密钥指纹。我最初遵循一个指南在Linux上生成一个ssh密钥。
我需要输入什么命令才能找到我当前的RSA密钥指纹?
- fwiw,我一直回到这篇文章,因为Github是我在钥匙上看到指纹的地方,我想确保我使用的是相应的私钥。也许它确实需要一个Github标签,因为这篇文章有助于Github相关的查询?
- @我回到这篇文章是因为Gitlab也使用了那些指纹…
- 我来这是因为特拉维斯,它也使用它。D
- 对于那些使用Linux"不断回到这个页面"的用户来说,把这个拷贝到您的bashrc:function fingerprint() { ssh-keygen -lf $1 -E md5 },然后(在您找到bashrc之后)您可以用fingerprint ~/.ssh/key_file得到一个指纹。
运行以下命令检索ssh密钥的sha256指纹(-l表示"list",而不是创建新密钥,-f表示"filename"):
1
| $ ssh-keygen -lf /path/to/ssh/key |
例如,在我的计算机上,我运行的命令是(使用RSA公钥):
1 2
| $ 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)指纹格式,请运行:
1
| $ ssh-keygen -E md5 -lf <fileName> |
奖金信息:
ssh-keygen -lf也用于known_hosts和authorized_keys文件。
要在Linux/Unix/OS X系统上查找大多数公钥,请运行
1
| $ 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代理不同。)
- 如何找到路径?
- 另外,如果只需要公钥,请运行:cat ~/.ssh/id_rsa.pub。
- 因为您的十六进制指纹是32位数字,我相信它是MD5指纹,对吗?而不是一个40位数的指纹,这将表明sha1
- 在非Ubuntu系统上,相关文件可能在/etc/ssh中,例如/etc/ssh/ssh_host_rsa_key.pub
- 用xclip -sel clip < ~/.ssh/id_rsa.pub把长版本(你给Github或DigitalOcean的东西)复制到xclip。如果你没有xclip,先做sudo apt-get install xclip。
- 仅供参考,Mac OS X(雪豹):ssh-keygen -lf /private/etc/ssh_host_rsa_key.pub。
- 值得注意的是,公共/私人密钥对中的两个密钥的指纹应该相同;因此,.ssh/id_rsa的指纹应该与.ssh/id_rsa.pub的指纹相同。所以,你可以使用其中一个(而且,如果你像我一样,喜欢标签完成,它会使工作减少2次击键。效率!.
- 如果您正在与AWS控制台中列出的指纹进行比较,这将节省您的时间…serverfault.com/questions/603982/&hellip;
- @佐拉瓦尔,甚至乌班图现在都是埃多克斯。
- 不适用于Windows。
- 您也可以只键入ssh-keygen -l。然后它会要求您提供该文件,并建议您的公钥(如果存在)。这样您就不需要自己键入路径。
- 您为"在Linux/Unix/OSX系统上查找大多数公共资源"提供的命令非常有用!例如,我在覆盆子PI上的rsa密钥可以在:/etc/ssh/ssh_host_rsa_key.pub中找到。
- 如果不需要标准的sha256输出,请使用ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub。
更新的ssh命令将指纹列为sha256键。
例如:
1 2
| ssh-keygen -lf ~/.ssh/id_dsa.pub
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA) |
如果需要将其与旧指纹进行比较,还需要指定使用MD5指纹哈希函数。
1 2
| 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) |
也可提供:-E sha1。
更新。。。是的……是的…我知道。。。不应再使用ssh的dsa密钥,应使用较旧的rsa密钥或较新的黄道密钥。
对于那些一直在编辑我在上面使用的命令的"管理员"。别换了!您使命令和结果输出不匹配!
- 这里值得一提的是,您可以告诉ssh使用ssh -o FingerprintHash=md5 example.org显示服务器的旧MD5指纹,如本答案中所述。(我只是在寻找答案,这个答案让我找到了那个答案,所以我想其他人可能也有类似的经历。)
- 这个答案对那些希望将其密钥与github.com显示的内容(即以十六进制格式格式化的MD5)进行比较的人最有帮助。
- 也非常有助于对比油灰报告的内容。
要在Ubuntu上查看您的密钥,只需在终端上输入以下命令:
ssh-add -l
您将得到这样的输出:2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23Yourname@Ubuntu(RSA)
但是,如果出现错误,比如:Could not open a connection to your authentication agent.。这意味着ssh代理没有运行。您可以使用以下命令启动/运行它:ssh-agent bash(感谢@richard的评论),然后重新运行ssh-add -l。
- 如果您不在Ubuntu上,您可能会很不幸地得到"无法打开到您的身份验证代理的连接"。
- 这仅在运行身份验证代理时有效。
- 要使身份验证代理运行,可以使用ssh-agent bash并继续使用life。在日常生活中,ssh-agent并不能保证在所有系统上都能实现一致性。
- Linux的另一个提示:ssh-keygen-g3的选项-f(dump fingerprint)将显示密钥的指纹:$ssh-keygen-g3-f/path/to/keyfile.pub answers.ssh.com/questions/494/&hellip;
密钥对(私钥和公钥)将具有相同的指纹;因此,如果您不记得哪个私钥属于哪个公钥,请通过比较它们的指纹来查找匹配项。
MarvinVinto给出的投票最多的答案提供了公共ssh密钥文件的指纹。也可以查询相应的私有ssh密钥的指纹,但它需要较长的一系列步骤,如下所示。
如果还没有加载ssh代理,请加载它。最简单的方法是调用
或
(或者你用的另一个贝壳)。
加载要测试的私钥:
1
| $ ssh-add /path/to/your-ssh-private-key |
如果密钥受密码保护,将要求您输入密码短语。
现在,正如其他人所说,输入
1 2
| $ 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),只需在shell上键入"exit",然后在加载ssh代理之前返回shell。
我没有添加新的信息,但希望所有级别的用户都能清楚地知道这个答案。
- 第一段是不真实的,ssh-add -l和ssh-keygen -l对给定的密钥对返回相同的指纹。另外,它应该是小写的-l,而不是大写的。
- 我不反对ssh-add -l和ssh-keygen -l为给定的密钥对返回相同的指纹。但我不明白我第一段的原始陈述有什么问题。我加了一句话来澄清。
- 将ssh-keygen指向一个密钥,而不是启动代理程序,然后加载密钥,然后获取指纹,这只是简单的操作。
- 如果您只有私钥,则不必运行ssh-agent。假设PRIVKEY已设置为私钥文件,PUBKEY已设置为(最初不存在的)公钥文件,则执行以下操作:ssh-keygen -y -f"${PRIVKEY}">"${PUBKEY}"重新生成ssh公钥,如果需要md5散列,则执行ssh-keygen -E md5 -l -v -f"${PUBKEY}"操作;如果需要sha-256散列,则仅执行ssh-keygen -l -v -f"${PUBKEY}"操作(现在默认为sha-256)。
如果您的密钥在ssh代理中,最快的方法是:
1
| $ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin |
代理中的每个密钥将打印为:
1
| 4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA) |
- 需要一种更快的方法将我的密钥与我的Github帐户上的密钥进行匹配,这个答案帮助我做到了这一点。
在这里复制来自AWS论坛的内容,因为我发现它对我的用例很有用-我想检查我的哪些密钥与导入到AWS的密钥匹配
openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c
在哪里?-primary.pem是要检查的私钥
也将在Mac OS X V10.8(美洲狮)-V10.10(约塞米蒂)上工作。
它还支持选项-E来指定指纹格式,因此在需要MD5时(通常由github使用),只需将-E md5添加到命令中即可。
- +1最简单的答案。从man ssh-add中,-l选项是"列出代理当前所代表的所有身份的指纹"。
这是我用来获取创建DigitalOcean水滴的ssh关键指纹的shell函数:
1 2 3 4
| fingerprint() {
pubkeypath="$1"
ssh-keygen -E md5 -lf"$pubkeypath" | awk '{ print $2 }' | cut -c 5-
} |
把它放在你的~/.bashrc里,找到它,然后你就可以得到指纹了:
1 2
| $ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9 |
在Windows上,如果您正在运行Putty/Pageant,则在将Putty(.ppk)键加载到Pageant中时会列出指纹。它非常有用,以防你忘记使用哪一个。
- 谢谢你,有时候我们Linux的人会忘记Windows,特别是正如OP提到的Putty。
如果您的ssh代理正在运行,则
列出所有身份的RSA指纹,或列出公钥的-l。
如果代理没有运行,请尝试:
1
| ssh-agent sh -c 'ssh-add; ssh-add -l' |
对于您的公钥:
1
| ssh-agent sh -c 'ssh-add; ssh-add -l' |
如果您收到消息:"代理没有标识",那么您必须首先通过ssh-keygen生成RSA密钥。
- 我安装了openssh,然后尝试使用putty连接到服务器。它提供了一个ssh-ed25519 256密钥指纹,但我收到了"无身份"消息。你知道在哪里可以找到和列出这把钥匙吗?与生成新的RSA密钥相比,使用此密钥是否有缺点?
- 在/etc/ssh/ssh_host_ed25519_key.pub下发现的。问题的第二部分仍然存在:使用这个自动生成的键有什么缺点吗?
有时你可以在你的~/.ssh目录中有一堆密钥,并且不知道哪个匹配github/gitlab/etc显示的指纹。
下面介绍如何显示~/.ssh目录中所有密钥的密钥文件名和MD5指纹:
1 2 3 4
| cd ~/.ssh
find . -type f -exec printf"
{}
" \; -exec ssh-keygen -E md5 -lf {} \; |
(有关参数的含义,请参阅有关find命令的回答。
请注意,属于一个密钥的私有/公共文件具有相同的指纹,因此您将看到重复的文件。
google compute engine在Linux实例的串行输出中显示ssh主机密钥指纹。API可以从GCE获取这些数据,并且不需要登录到该实例。
除了串行输出,我在其他任何地方都找不到它。我认为指纹应该放在对程序员更友好的地方。
但是,它似乎取决于实例的类型。我正在使用Debian 7(喘息)f1 micro的实例。
在Fedora上,我会[locate~/.ssh]告诉我密钥是@
1 2
| /root/.ssh
/root/.ssh/authorized_keys |
- 操作人员似乎知道在哪里可以找到他们的钥匙(这不是,~/.ssh/id*.pub是),并想得到他们的指纹。
要在第一次连接之前检查远程ssh服务器,可以查看www.server-stats.net/ssh/以查看服务器的所有shh密钥,以及从何时知道该密钥。
这不像是一个SSL证书,但绝对是第一次连接到任何ssh服务器之前必须做的。
- 用户不是在寻找第三方网站,而是从操作系统本身的命令行。
- 所以,它基本上是聚合插件,除了ssh而不是ssl,并且只有一个(有点不确定)公证器。听起来不错吧?
- 链接已断开…