如何找到RSA密钥指纹?

Zak*_*off 874 ssh rsa ssh-keys

我需要为GitHub进行SSH密钥审核,但我不确定如何找到我的RSA密钥指纹.我最初按照指南在Linode主持的Ubuntu 10.04(Lucid Lynx)盒子上进行设置.

如果使用PuTTY远程登录,我需要输入什么命令来查找当前的RSA密钥指纹?

Mar*_*nto 1199

运行以下命令以检索SSH密钥指纹(-l表示"列表"而不是创建新密钥,-f表示"文件名"):

$ ssh-keygen -lf /path/to/ssh/key
Run Code Online (Sandbox Code Playgroud)

例如,在我的机器上,我运行的命令是(使用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)
Run Code Online (Sandbox Code Playgroud)

使用较新版本的ssh-keygen,ssh-keygen -lf如果你想要与旧版本相同的格式运行(感谢Lloyd Dewolf).

奖金信息:

known_hosts也适用于authorized_keysssh-add -l文件.

在Linux/Unix/OS X系统上找到最公开的-l(如果你想看到其他用户的homedirs,你必须是root或sudo.)

-f是非常相似,但列出了添加到您的代理键的指纹.(OS X用户注意到通过Keychain进行魔术无密码SSH与使用ssh-agent不同.)

  • 如果你不想要标准*sha256*输出,请使用`ssh-keygen -E md5 -lf~/.ssh/id_rsa.pub` (17认同)
  • 值得注意的是,公钥/私钥对中的两个密钥的指纹应该相同; 因此`.ssh/id_rsa`的指纹应该与`.ssh/id_rsa.pub`的指纹相同.所以,你可以使用其中任何一个(如果你像我一样喜欢tab-completion,它可以减少2次击键.效率!). (11认同)
  • 在非Ubuntu系统上,相关文件可能位于/ etc/ssh中,例如/etc/ssh/ssh_host_rsa_key.pub (7认同)
  • 我如何找到路径? (5认同)
  • 由于您的示例十六进制指纹是32位数,我相信它将是MD5指纹,对吗?而不是40位指纹,这将指示SHA1 (4认同)
  • 如果您正在与AWS控制台中列出的指纹进行比较,这将节省您的时间... https://serverfault.com/questions/603982/why-does-my-openssh-key-fingerprint-not-match-the -aws-EC2-控制台密钥对手指 (4认同)
  • @Zorawar,甚至ubuntu现在是`/ etc/ssh/ssh_host_rsa_key.pub` (4认同)

ant*_*ony 655

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

例如:

ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)
Run Code Online (Sandbox Code Playgroud)

如果需要将其与旧指纹进行比较,还需要指定使用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)
Run Code Online (Sandbox Code Playgroud)

也提供: -E sha1

更新......是......是的......我知道......不应再使用SSH的DSA密钥,而应使用旧的RSA密钥或更新的黄道键.

对那些继续编辑我在上面使用的命令的"管理员".停止改变它!您使命令和结果输出不匹配!

  • 这个答案对那些希望将他们的密钥与github.com显示的内容进行比较的人(即以十六进制格式化的MD5)最有帮助 (22认同)
  • 这里值得一提的是,你可以告诉`ssh`使用`ssh -o FingerprintHash = md5 example.org`向你展示服务器的旧MD5指纹,正如[在这个答案中]所提到的那样(http://superuser.com/a/ 294963分之929567).(我只是在寻找那个,这个答案引导我去那个,所以我认为其他人也可能有类似的经历.) (6认同)
  • 与将要报告的腻子进行比较也非常有帮助。 (2认同)

Kom*_*omu 25

要在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-agent没有运行.您可以使用以下命令启动/运行它 ssh-agent bash(感谢评论中的@Richard),然后重新运行ssh-add -l

  • 如果你不在Ubuntu上,你很可能会得到这个"无法打开与身份验证代理的连接". (5认同)

Wir*_*nto 17

密钥对(私钥和公钥)将具有相同的指纹; 因此,如果您不记得哪个私钥属于哪个公钥,请通过比较其指纹来查找匹配项.

Marvin Vinto投票最多的答案提供了公共 SSH密钥文件的指纹.也可以查询相应私有 SSH密钥的指纹,但需要更长的一系列步骤,如下所示.

  1. 如果尚未加载SSH代理,请加载SSH代理.最简单的方法是调用

    $ ssh-agent bash
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    $ ssh-agent tcsh
    
    Run Code Online (Sandbox Code Playgroud)

    (或您使用的其他外壳).

  2. 加载要测试的私钥:

    $ ssh-add /path/to/your-ssh-private-key
    
    Run Code Online (Sandbox Code Playgroud)

    如果密钥受密码保护,将要求您输入密码.

  3. 现在,正如其他人所说,输入

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)
    
    Run Code Online (Sandbox Code Playgroud)

    fd:bc:...是你追求的指纹.如果有多个键,则将打印多行,最后一行包含最后加载的键的指纹.

  4. 如果你想要停止代理(即,如果你调用了上面的第1步),那么只需在shell上输入`exit',你就可以在加载ssh代理之前返回shell.

我没有添加新信息,但希望这个答案对所有级别的用户都很清楚.

  • 如果您只有私钥,则不一定需要运行 `ssh-agent`。假设`PRIVKEY`已设置为私钥文件,并且`PUBKEY`已设置为(最初不存在的)公钥文件,请执行:`ssh-keygen -y -f "${PRIVKEY}" > "${ PUBKEY}"` 重新生成 SSH 公钥,然后`ssh-keygen -E md5 -l -v -f "${PUBKEY}"` 如果你想要 MD5 哈希或者只是 `ssh-keygen -l -v -f "${PUBKEY}"` 如果你想要 SHA-256 哈希值(SHA-256 现在是默认值)。 (2认同)

cmc*_*nty 12

密钥在SSH代理中的最快方法:

$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin
Run Code Online (Sandbox Code Playgroud)

代理中的每个密钥将打印为:

4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)
Run Code Online (Sandbox Code Playgroud)

  • 需要一种更快捷的方法来匹配我的GitHub帐户上的密钥,这个答案帮助我做到了这一点. (3认同)

Phi*_*hil 11

在这里从AWS 论坛重现内容,因为我发现它对我的用例很有用 - 我想检查哪些密钥与我导入到AWS中的密钥相匹配

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

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


小智 9

$ ssh-add -l 
Run Code Online (Sandbox Code Playgroud)

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

它还支持-E指定指纹格式的选项,因此如果需要MD5(经常使用它,例如GitHub),只需添加-E md5到命令即可.


Bry*_*nta 7

这是我用来获取用于创建DigitalOcean水滴的SSH键指纹的shell函数:

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

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

$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9
Run Code Online (Sandbox Code Playgroud)


Dmi*_*117 6

在Windows上,如果您正在运行PuTTY / Pageant,则在将PuTTY(.ppk)密钥加载到Pageant中时,将列出指纹。如果您忘记了正在使用哪一个,这将非常有用。

在此处输入图片说明

  • 谢谢,有时候我们Linux人忘记了Windows,尤其是OP提到的腻子。 (3认同)

Dan*_*scu 5

有时,您的目录中可能有一堆密钥~/.ssh,但不知道哪个与 GitHub/Gitlab/etc 显示的指纹匹配。

以下是显示目录中所有密钥的密钥文件名和 MD5 指纹的方法~/.ssh

cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;
Run Code Online (Sandbox Code Playgroud)

(有关参数的含义,请参阅有关命令的这个答案find

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