我需要为GitHub做SSH密钥审计,但我不确定如何找到我的RSA密钥指纹。我最初是按照指南在Linux上生成SSH密钥的。

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


当前回答

这是我用来获取SSH密钥指纹以创建DigitalOcean液滴的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

其他回答

有时您可以在~/中有一串键。ssh目录,不知道哪个匹配GitHub/Gitlab/etc显示的指纹。

下面介绍如何显示~/中所有密钥的密钥文件名和MD5指纹。ssh目录:

cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;

(参数的含义请参见find命令的回答。

请注意,属于一个密钥的私有/公共文件具有相同的指纹,因此您将看到重复的指纹。

如果您需要从私钥获取,请执行以下操作:

ssh-keygen -y -f key > key.pub && ssh-keygen -lf key.pub

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

例如:

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

如果您需要将其与旧指纹进行比较,还需要指定使用MD5指纹哈希功能。

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密钥或较新的黄道密钥。

致那些一直编辑我在上面使用的命令的“管理员”。别再改了!您使命令和产生的输出不匹配!

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

ssh-add - l

你会得到这样的输出: 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23 yourName@ubuntu (RSA)

如果你得到一个错误,比如;无法打开到您的身份验证代理的连接。 这意味着ssh-agent没有运行。你可以用以下命令启动/运行它: ssh-agent bash(感谢评论中的@Richard),然后重新运行ssh-add -l

这是我用来获取SSH密钥指纹以创建DigitalOcean液滴的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