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

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


当前回答

执行以下命令获取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是不同的。)

其他回答

$ ssh-add -l 

也适用于Mac OS X v10.8 (Mountain Lion) - v10.10 (Yosemite)。

它还支持-E选项来指定指纹格式,因此在需要MD5的情况下(它经常被使用,例如GitHub),只需在命令中添加-E MD5。

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

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

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

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

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

谷歌计算引擎在Linux实例的串行输出中显示SSH主机密钥指纹。API可以从GCE获取数据,并且不需要登录到实例。

除了串行输出,我在其他地方都没找到。我认为指纹应该放在对程序员更友好的地方。

然而,这似乎取决于实例的类型。我正在使用Debian 7 (Wheezy) f1-micro的实例。

执行以下命令获取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是不同的。)

在Fedora上我找到~/。SSH,它告诉我密钥在

/root/.ssh
/root/.ssh/authorized_keys