如何访问我的SSH公钥?

914

我刚刚生成了RSA密钥对,想要将其添加到GitHub。

我尝试过cd id_rsa.pubid_rsa.pub,但没有成功。如何访问我的SSH公钥?


可能是重复的问题:如何找到我的RSA密钥指纹? - kenorb
4
你的意思是Q是这个问题的副本吗?这个问题在两年前就被问过了。 :) - sscirrus
是的,另一个问题似乎定位更好(基于措辞等),它在更短的时间内获得了更多的浏览量和投票,这表明它更受欢迎。请参见:即使有更新的答案,我是否应该投票关闭重复的问题? 一旦重复,两个答案可以合并为一个。 - kenorb
8
“pbcopy < ~/.ssh/id_rsa.pub” 对我有效!查看这篇GitHub文章 - Connor Leech
24个回答

1529

cat ~/.ssh/id_rsa.pubcat ~/.ssh/id_dsa.pub

您可以通过以下方式列出您所有的公钥:

$ ls ~/.ssh/*.pub


14
尽管我在指定的位置(C:/Users/Me/.ssh/.id_rsa.pub)看到该文件,但这些命令仍然出现错误:没有那个文件或目录。我是从Git Bash执行这些命令的,路径是MyPC ~/.ssh。 - sscirrus
4
在Windows中,您可以使用type命令。或者只需在记事本中打开.pub文件并将其粘贴到GitHub上。 - Peter Štibraný
3
接受这个......在Unix或Cygwin下也可以运行。 - Peter Štibraný
43
在Mac OS X上,运行命令cat ~/.ssh/id_rsa.pub可以查看你的SSH公钥。 - karlingen
在Windows上,它只是id_rsa.pub,而不是*.*id_rsa.pub - laggingreflex
显示剩余6条评论

293

将密钥复制到剪贴板。

$ pbcopy < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard

警告:非常重要的是要精确地复制密钥,不要添加换行符或空格。幸运的是,pbcopy 命令可以轻松地执行此设置。

然后将其粘贴到需要的位置。

有关该过程的更多详细信息,请查看:生成SSH密钥


7
对于那些没有“pbcopy”工作的用户,请执行“sudo apt-get install xclip -y”。 - therealbigpepe
6
请执行以下命令:sudo apt-get install -y xclip,然后输入命令alias pbcopy="xclip -sel clip",接下来输入命令pbcopy < ~/.ssh/id_rsa.pub即可将你的SSH公钥复制到剪贴板。或者只需执行命令xclip -selection clipboard < ~/.ssh/id_rsa.pub也可以完成相同的操作。 - gebbissimo
我遇到了“pbcopy:命令未找到”的错误。 - Hector

66

您可以尝试运行以下命令来显示您的RSA指纹:

ssh-agent sh -c 'ssh-add; ssh-add -l'

或公钥:

ssh-agent sh -c 'ssh-add; ssh-add -L'

如果您看到了消息:“The agent has no identities.”,那么您需要先通过 ssh-keygen 生成您的RSA密钥。


3
当你事先不知道密钥路径时,这很有用。它并不总在 ~/.ssh/ 中。 - rudolfbyker
尝试过了,在Mac、Win10(在git bash中)和Ubuntu上都可以运行。 - Filip Haglund
2
使用 ssh-add -L 是更好的选择,因为并不是每个 SSH 密钥都是 RSA 密钥,位于 ~/.ssh 文件夹中。我更喜欢使用我的 PGP 密钥进行身份验证,因此我根本没有 ~/.ssh/id_rsa.pub 文件。 - steinybot

39

如果您在使用Windows操作系统,请执行以下操作:选择所有内容,然后从记事本窗口中复制:

notepad ~/.ssh/id_rsa.pub  

如果您正在使用OS X操作系统,请使用:

pbcopy < ~/.ssh/id_rsa.pub

30

若您使用的是Mac、Ubuntu或Linux兼容设备,请使用以下命令打印公钥并复制:

$ cat ~/.ssh/id_rsa.pub

21

以下是我在 OS X 上找到我的方法:

  1. 打开终端
  2. (您在主目录中) cd .ssh(一个隐藏的目录)
  3. pbcopy < id_rsa.pub (将其复制到剪贴板)

如果这样不行,请运行 ls 命令,看看哪些文件具有 .pub 扩展名。


16

在终端上运行cat ~/.ssh/id_rsa.pub

解释

  1. cat是一个标准的Unix实用工具,可读取文件并打印输出
  2. ~是您的个人主目录路径
  3. /.ssh - 您的隐藏目录包含所有ssh证书
  4. id_rsa.pubid_dsa.pub是RSA公钥(私钥位于客户端机器上)。例如,主密钥可用于安全地从远程存储库克隆项目到客户端终端。

13

生成 SSH 密钥后,您可以执行以下操作:

cat .ssh/id_rsa.pub |pbcopy

这将把你的ssh密钥复制到剪贴板中。


12
如果您在使用Windows系统,则命令为:

type %userprofile%\.ssh\id_rsa.pub

如果您有密钥,它应该打印出来。您应该复制整个结果。 如果没有密钥,则执行以下操作:

ssh-keygen -t rsa -C "your.email@example.com" -b 4096


11

如果您正在使用Windows PowerShell,最简单的方法是:

cat ~/.ssh/id_<key-type-here>.pub | clip

这将把密钥复制到您的剪贴板,以便轻松粘贴。

所以,在我的情况下,我使用ed25519,因为RSA现在相当容易被破解:

cat ~/.ssh/id_ed25519.pub | clip

因为我经常这样做,所以我创建了一个函数并在我的 PowerShell 配置文件中设置了一个简单的别名(更多关于 PowerShell 配置文件的信息可以在此处了解)。将以下内容添加到您的 Microsoft.PowerShell_profile.ps1 文件中:


function Copy-SSHKey {
    Get-Content ~/.ssh/id_ed25519.pub | clip
}

Set_Alias -Name sshkey -Value Copy-SSHKey

接下来,在 PowerShell 控制台中运行 . $profile 命令以加载函数。从现在起,您只需要运行 sshkey 命令,然后通过剪贴板将密钥粘贴到需要的地方即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接