GitHub上的“密钥无效”消息

时间:2012-05-07 03:33:14

标签: github ssh-keys

我已按照here概述的程序为新服务器安装生成了SSH密钥。但是,当我将id_rsa.pub的内容复制到GitHub上的我的密钥列表时,我收到错误消息“密钥无效。确保您已正确复制文件。”

生成的密钥 有效,我正在按原样复制它(所有在一行中,在开头/结尾没有空格)。

任何人都知道可能会发生什么?

22 个答案:

答案 0 :(得分:49)

我来到这里是因为我有同样的问题。从您的问题,我意识到我正在从错误的文件中复制内容(只有id_rsa文件,没有 .pub扩展名。)

来自MAC:

vi ~/.ssh/id_rsa.pub

完全从字符块的末尾(带有电子邮件域扩展名的最后一个字母)复制到开头,以 ssh-rs ...

开头

如果它不起作用,您肯定无法正确复制。

有效。

如果您使用 Windows ,请使用记事本和复制粘贴,如上所述。

我希望有所帮助。

答案 1 :(得分:38)

复制/粘贴公钥时,以下是一些完全不清楚的步骤。 (为了记录,我使用Putty Key Generator作为我的钥匙。)

  • 在第一行输入ssh-rsa。
  • 确保在ssh-rsa
  • 之后添加一个空格
  • 将密钥复制/粘贴到密钥文本框中时,应保留\ n字符(x0A)。如果您在Windows上使用记事本,则在将文本复制到Github之前,您将看不到这些新行。

注意这个屏幕截图,ssh-rsa之后有一个空格(见光标。)公钥文本还包含三个\ n字符,因此您可以看到公钥文本在下一行中突然下降到下一行三次文本框。SSH RSA Key

答案 2 :(得分:12)

我尝试了几种方法,但没有一种方法有帮助(我的操作系统是ubuntu)。然后我想如果我可以使用命令“more”打印〜/ .ssh / id_rsa.pub的内容。

抱歉,我没有声望发布图片!当我有,我会发布它!

这是一个可以看到图片的网址:

enter image description here

我从命令行复制了内容,并且工作了!!!

答案 3 :(得分:3)

在Windows中,

只需复制密钥文件中的裸密钥数据,然后删除新行。 在对话框中写下这些内容以解决您的问题。 ssh-rsa Key

注意:ssh-rsa和密钥

之间有空格

你已经完成了。

答案 4 :(得分:3)

有人建议使用$ vi ~/.ssh/id_rsa.pub,但这对我不起作用。

因此,除此以外,我在Windows计算机上使用了$ cat ~/.ssh/id_rsa.pub命令在终端上打印出来,然后将其复制。

答案 5 :(得分:2)

对于那些展望未来的人来说,另一个常见问题是自动换行。例如,如果运行cat ~/.ssh/id_rsa.pub,它可以换行,从而在每个换行符处添加额外的\个字符。删除这些,你的密钥应该工作正常。

答案 6 :(得分:2)

如果您确实复制了id_rsa.pub键的内容(在一个连续的行中),结果应如下(来自GitHub ssh help page):

ssh key

OP louism confirms复制粘贴问题:

  
      
  • 由于一个非常模糊的原因,来自emacs的复制粘贴删除了ssh-rsa之后的\n ,这导致了问题。
  •   
  • vi的复制粘贴解决了问题
  •   

答案 7 :(得分:2)

GitHub

Recommended

复制SSH-KEY

我使用xclip复制id_rsa.pub密钥,如下所示:

1。安装xclip

sudo apt-get install xclip

2。使用xclip

复制

xclip -sel clip < ~/.ssh/id_rsa.pub

祝你好运。

答案 8 :(得分:1)

我遇到了同样的问题,尽管直接从终端(Cmder / ConEmu)复制cat输出的公钥。看来,用于复制公钥的方法似乎有所不同。这是一种检查方式:

$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
4096 SHA256:...

然后将失败的密钥粘贴到新文件中,并尝试验证:

$ ssh-keygen -l -f test.pub
test.pub is not a public key file.

就我而言,我一直使用cat从终端输出中复制密钥;而是从vim获取密钥。这是在启用自动换行的情况下在vim中打开键的方法:

$ vim "+set wrap" ~/.ssh/id_rsa.pub

我怀疑终端模拟器可能与它有关,因为我没有遇到Terminal.app的这个问题。

答案 9 :(得分:1)

我知道这是一个问题,现在是cpl岁,但是如果2018年有人遇到此问题:   

那么下面就不用说了:

我的问题是我试图复制私钥

  

id_rsa

代替公钥内容

  

id_rsa。发布

作为我的SSH gitlab存储库密钥,所以在您之后:

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

请记住要复制的 .pub 文件扩展名:

  • OSX

pbcopy <〜/ .ssh / id_runmyprocess_rsa。发布

  • Linux

xclip -sel剪辑<〜/ .ssh / id_rsa。发布

  • Windows PowerShell

cat〜/ .ssh / id_rsa。发布 |剪辑


然后将其作为SSH密钥粘贴到您的gitlab / github或其他存储库中

这很合理,因为您应该始终仅共享公共密钥,而不是私有密钥:)

答案 10 :(得分:0)

我的笔记本电脑运行的是 macOS Big Sur 版本 11.3.1,ssh-keygen -t rsa 以 ssh-rsa-cert-v01@openssh.com 开头生成了一个很长的密钥。 ssh-keygen -t rsa -b 4096 有效;它使用 ssh-rsa 算法创建了一个密钥。

答案 11 :(得分:0)

将 ssh 公钥复制到剪贴板主要是这里的技巧,最好的方法是从终端。 您必须通过以下命令将此密钥输出到终端 cat ~/.ssh/id_rsa.public 并按回车键。 ssh public 将显示在 GitBash 终端屏幕上,然后您只需要通过从电子邮件的最后一个字符到密钥的开头进行选择,即 ssh rsa... 来仔细复制它 我花了几天时间,最后得出了这个解决方案。

答案 12 :(得分:0)

如果您使用的是 linux 或 mac,只需执行以下操作:

$ cat ~/.ssh/id_rsa.pub

输出应如下所示:

ssh-rsa somerandomcharacters user@domain

最后一步是复制内容并将其粘贴到您的目的地

答案 13 :(得分:0)

我试图上传我的公共密钥,并收到“无效密钥”消息。我的格式不正确,因为密钥末尾有多余的空格。它应采用以下格式:ssh-rsa <public-key>

答案 14 :(得分:0)

要将id_rsa.pub的全部内容复制到剪贴板:

运行> pbcopy ~/.ssh/id_rsa.pub

答案 15 :(得分:0)

如果使用vs代码

code ~/.ssh/id_rsa.pub 将打开.pub文件,将其复制到github

答案 16 :(得分:0)

这是我们在生成密钥时面临的常见问题。在生成SSH时,我们将获得两个差异文件,其中一个是id_rsa和id_rsa.pub。这里带有pub扩展名的文件是公钥持有者文件。您必须复制此文件中的内容并将其添加到Github。

注意: 1.公钥文件的内容以“ SSH-RSA”开头 2.以您的Github电子邮件ID结尾。例如:如果您使用@ gmail.com注册了Github,则发布文件的末尾具有指定的电子邮件ID

答案 17 :(得分:0)

如果您使用bash for windows作为终端并且您通过shift + highlighting + ctrl-c进行复制,那么此解决方案可能对您有用:

  1. 复制密钥并将其粘贴到记事本中后:
  2. example ssh key

    1. 现在转到编辑&gt;选择全部或Ctrl-A
    2. text highlighted

      1. 大量的蓝色区域是空白。您需要使用退格键或删除键删除它们。留下绿色圆圈中的空白。
      2. enter image description here

        1. 您现在应该可以将此编辑后的版本复制并粘贴到github。
        2. enter image description here

答案 18 :(得分:0)

我刚遇到这个问题。超级沮丧。我认为我的情况可能会影响问题的存在。我正在使用平板电脑,试图通过我的平板电脑浏览器(Chrome)在githubs网站上设置密钥,我正在从连接到我的远程linux服务器的ssh应用程序复制密钥。

最终发生的事情是,当我将密钥复制到浏览器时,它引入了许多换行符。不仅如此,它还从插入新行的每个点删除了一个字符。

为了让它工作,我不得不手动找到每个新的换行符,然后寻找钥匙的那一部分以找到丢失的字符。然后我添加了角色并删除了新行。在我追捕每一个变化后,钥匙工作正常。

顺便说一句,我没有添加任何新的换行符,例如ssh-rsa之后其他人提到的换行符。

希望这有助于其他人。我不知道为什么会这样。傻到复制到剪贴板会改变复制的文本。哦,我也把它从Vim中删除了。

答案 19 :(得分:0)

在我的情况下,我必须在接收电子邮件之后(在整个密钥字符串之后)添加额外的白色规则。在尝试复制我在Gitlab上输入的ssh密钥后,我意外地发现了这一点。

从我的pub键直接形式pbcopy命令行不起作用。 gitlab中带有额外白色规则的副本就完成了这个伎俩。

答案 20 :(得分:0)

如果你使用Sublime,你可以正确看到ssh-key。 检查是否有id_rsa.pub

ls -al ~/.ssh

如果它已经到位,请用崇高文本

打开它
sudo subl /home/user_name/.ssh/id_rsa.pub

然后复制并粘贴您的公共ssh密钥。

答案 21 :(得分:-1)

只需尝试安装 wps2019 并在 wps2019 上打开 .pub 并复制代码并粘贴它: