GitHub上的“密钥无效”消息


79

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

生成的密钥有效的,我完全照原样复制了它(全部在一行中,开头/结尾没有空格)。

有人知道会发生什么吗?


1
可以肯定的是,您确实包括ssh-rsa了密钥本身之前的,是吗?
大卫·凯恩

Answers:


133

我来这里是因为我有同样的问题。从你的问题,我意识到,我是复制从错误的文件中的内容,而无需.pub扩展(这是我的私人密钥,即id_rsa文件,它应该在任何时候都保密!)

从MAC:

vi ~/.ssh/id_rsa.pub

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

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

有效。

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

希望对您有所帮助。


13
由于一个非常模糊的原因,从emacs进行复制粘贴会删除ssh-rsa之后的\ n,这就是造成此问题的原因。从vi复制粘贴解决了该问题。既然您给了我一个尝试的主意,我将把答案给您!
user2398029'5

2
vi对我不起作用。我必须使用cat命令(OSX)将其打印到终端并复制其输出。感谢您将我带入正确的道路。
耶利米

从vim中复制对我
有用

无论出于什么原因,我的vim都无法包装密钥。出于崇高的目的而复制以获得完整的密钥。工作了。
John Cramerus

vi做到了这一点,我使用了nano,该文件被截断了$符号
Jacky

59

复制/粘贴您的公钥时,有些步骤根本不清楚。(出于记录目的,我使用Putty Key Generator作为我的密钥。)

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

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


6
我的id_rsa.pub文件缺少“ ssh-rsa”部分。在Github上手动添加它就可以了。
Furgas 2013年

7
与此相关,在GitLab(测试7.4.3),SSH密钥只能时(如上面所建议的)将加入ssh-rsa和由包括新行字符。
jdknight 2014年

2
这一定是油灰问题。我在腻子上也遇到了同样的错误
jpaugh

1
@JamesLawruk BTW,GitHub(以及我相信,所有使用ssh的程序)都会忽略密钥文件中的所有换行符。(这就是允许您将其分成3行的原因-在相当随意的点。)
jpaugh

2
在那之后加上“ ssh-rsa”一个空格就对我有所帮助。非常感谢。
Ales

17

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

对不起,我没有发布图片的声誉!当我有的时候,我会发布它!

这是一个您可以在其中看到图片的网址:

在此处输入图片说明

我从命令行复制了内容,并且成功了!!!


1
发布图片网址,某些用户可能会将其添加到正文中。
DontVoteMeDown

在某些网站上上传图片并共享links。解决问题
Hamad

@DontVoteMeDown我已经分享了网址。只需复制内容即可使用!
Sparks_Fly 2013年

1
@Hamad我已经分享了网址。
Sparks_Fly

谢谢,这确实有效……每个人都有自己的理论。当涉及到诸如SSH密钥之类的东西时,事情不应该是“魔术”。在github上,添加SSH密钥的火车残骸是什么。
Samaursa'3

11

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

那么下面就不用说了:

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

id_rsa

代替公钥内容

id_rsa。酒馆

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

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

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

  • OSX

  pbcopy <〜/ .ssh / id_rsa。酒馆

  • Linux

  xclip -sel剪辑<〜/ .ssh / id_rsa。酒馆

  • Windows PowerShell

  猫〜/ .ssh / id_rsa。酒吧| 夹


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

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


4

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

因此,我改为使用$ cat ~/.ssh/id_rsa.pubWindows计算机上的命令在终端上打印出来,然后将其复制。


3

建议通过GitHub上

复制SSH-KEY

我曾与之xclip一起复制id_rsa.pub密钥,如下所示:

1.安装 xclip

sudo apt-get install xclip

2.复制 xclip

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


祝好运。


3

在Windows中

只需从密钥文件中复制裸键数据并删除新行即可。 在对话框中的下方内容中写下这些内容以解决您的问题。ssh-rsa键

注意:ssh-rsa和密钥之间有空格

您完成了。


2

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


2

如果确实复制了id_rsa.pub密钥的内容(连续一行),则结果应如下所示(来自GitHub ssh帮助页面):

SSH密钥

OP louism 确认一个复制粘贴问题:

  • 由于一个非常模糊的原因,从emacs进行复制粘贴会删除\nafter ssh-rsa,这就是造成此问题的原因。
  • 从vi复制粘贴解决了这个问题

2

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

$ 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这个问题。


它对我有用:从Windows到Linux的Putty SSH,用vi打开密钥文件,然后通过在屏幕上选择并粘贴从Putty复制。奇怪的猫没用。
亚历山德鲁·特兰达菲·卡塔琳

使用了puttygen,它给了我完整的线条,而不是我躺在附近的一些pub文件。
Pysis

0

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

ls -al ~/.ssh

如果安装到位,请使用精美的文字打开

sudo subl /home/user_name/.ssh/id_rsa.pub

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


0

就我而言,我必须在电子邮件之后(在整个密钥字符串之后)添加一个额外的白色规则,然后该规则才能被接受。在尝试复制在Gitlab上输入的ssh密钥后,我偶然发现了这一点。

从我的pub key直接获取pbcopy命令行不起作用。来自gitlab的副本末尾带有额外的白色规则,达到了目的。


0

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

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

因此,要使其正常工作,我必须手动找到每个新的换行符,然后寻找关键部分以查找丢失的字符。然后,我添加了字符并删除了新行。在我找出所有零钱后,钥匙工作正常。

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

希望这对其他人有帮助。我不知道为什么会这样。愚蠢的是,复制到剪贴板会改变复制的文本。哦,我也直接从Vim复制了它。


0

如果您使用Windows的bash作为终端,并且通过shift +高亮+ ctrl-c复制,则此解决方案可能适用于您:

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

ssh密钥示例

  1. 现在转到“编辑”>“全选”或Ctrl-A

文字突出显示

  1. 大量的蓝色区域是空白。您需要使用退格键或Delete键将其删除。保留绿色圆圈中的空白。

在此处输入图片说明

  1. 现在,您应该能够将此编辑的版本复制并粘贴到github中。

在此处输入图片说明


0

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

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



0

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.