118

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

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

有人知道会发生什么吗?

4

26 回答 26

203

我来这里是因为我有同样的问题。从您的问题中,我意识到我正在从错误的文件中复制内容,没有扩展.pub名(这是我的私钥,即id_rsa文件,应该始终保密!)

从 MAC:

vi ~/.ssh/id_rsa.pub

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

如果它不起作用,那么您肯定没有正确复制。

有效。

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

我希望这有帮助。

于 2012-05-07T16:05:41.573 回答
74

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

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

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

于 2013-06-11T18:42:15.463 回答
27

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

那么下面是显而易见的:

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

id_rsa

而不是公钥内容

id_rsa。酒馆

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

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

请记住要从以下位置复制 的.pub文件扩展名:

  • 操作系统

  pbcopy < ~/.ssh/id_rsa. 酒馆

  • Linux

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

  • Windows PowerShell

  猫 ~/.ssh/id_rsa. 酒吧| 夹子


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

这很有意义,因为您应该始终只共享您的公钥,而不是私钥:)

于 2018-08-22T11:23:17.270 回答
22

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

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

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

在此处输入图像描述

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

于 2013-11-22T11:27:22.890 回答
6

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

所以代替那个,我$ cat ~/.ssh/id_rsa.pub在 Windows 机器上使用命令在终端上打印出来然后复制它。

于 2020-02-18T12:04:39.350 回答
3

如果您确实复制了id_rsa.pub密钥的内容(在一行中),结果应该如下所示(来自 The GitHub ssh help page):

SSH 密钥

OP louism 确认了复制粘贴问题:

  • 由于一个非常模糊的原因,从 emacs 复制粘贴删除了\nafter ssh-rsa,这就是导致问题的原因。
  • 从 vi 复制粘贴解决了这个问题
于 2012-05-07T06:50:26.713 回答
3

GitHub推荐_

复制SSH-KEY

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

1.安装xclip

sudo apt-get install xclip

2. 复制xclip

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


祝你好运。

于 2017-02-20T09:19:37.107 回答
3

在窗户里,

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

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

你完成了。

于 2017-07-25T07:30:42.230 回答
2

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

于 2014-03-10T16:45:51.657 回答
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 上没有这个问题。

于 2017-10-26T17:43:10.303 回答
1

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

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

于 2019-10-12T05:32:55.003 回答
1

我的笔记本电脑在 macOS Big Sur 版本 11.3.1 上,并ssh-keygen -t rsa在开头生成了一个非常长的密钥 ssh-rsa-cert-v01@openssh.com。 ssh-keygen -t rsa -b 4096工作过;它使用 ssh-rsa 算法创建了一个密钥。

于 2021-05-29T00:22:22.567 回答
1

如果你使用腻子(puttygen),复制这个!!!!

在此处输入图像描述

于 2021-09-11T05:58:50.997 回答
0

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

ls -al ~/.ssh

如果它到位,用崇高的文字打开它

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

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

于 2016-08-10T12:06:14.147 回答
0

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

来自我的 pub 密钥的 pbcopy 直接从命令行不起作用。来自 gitlab 的副本,最后带有额外的白色规则,成功了。

于 2017-02-22T09:16:54.337 回答
0

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

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

所以为了让它工作,我必须手动找到每个新的换行符,然后寻找那个部分的键来找到丢失的字符。然后我添加了字符并删除了新行。在我追查每一个变化之后,钥匙工作得很好。

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

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

于 2017-10-01T02:38:52.897 回答
0

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

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

示例 SSH 密钥

  1. 现在去编辑>全选或Ctrl-A

突出显示的文本

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

在此处输入图像描述

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

在此处输入图像描述

于 2018-02-07T23:51:45.137 回答
0

如果使用 vs 代码

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

于 2020-01-12T18:55:35.850 回答
0

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

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

于 2020-02-18T14:48:11.057 回答
0

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

于 2020-05-27T07:27:51.500 回答
0

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

$ cat ~/.ssh/id_rsa.pub

输出应采用如下形式:

ssh-rsa somerandomcharacters user@domain

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

于 2021-02-18T23:16:35.967 回答
0

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

于 2021-03-13T05:17:05.960 回答
0

我正在使用窗口操作系统,由于某些原因它对我不起作用:

$ clip < ~/.ssh/id_ed25519.pub
bash: clip: command not found

我在地址找到了隐藏.ssh文件夹:C:\Users\g1100_000\.ssh 您将看到 pub 文件如下:

在此处输入图像描述

使用您的代码编辑器打开它,然后将密钥复制到 github。希望这可以帮助你。

于 2021-10-06T18:26:10.907 回答
0

$ cat /c/Users/User/.ssh/id_rsa.pub 使用此命令代替 $ cat /c/Users/User/.ssh/id_rsa

于 2022-01-06T18:19:39.063 回答
-1

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

于 2021-02-17T06:12:23.357 回答
-1

从头开始按照以下说明进行操作,您将能够解决此问题。

许多 Git 服务器使用 SSH 公钥进行身份验证。为了提供公钥,系统中的每个用户都必须生成一个,如果他们还没有公钥的话。这个过程在所有操作系统中都是相似的。首先,您应该检查以确保您还没有密钥。默认情况下,用户的 SSH 密钥存储在该用户的 ~/.ssh 目录中。您可以通过转到该目录并列出内容来轻松检查您是否已经拥有密钥:

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

您正在寻找一对名为id_dsaorid_rsa的文件和一个带有.pub扩展名的匹配文件。该.pub文件是你的公钥,另一个文件是对应的私钥。如果您没有这些文件(或者您甚至没有.ssh目录),您可以通过运行一个名为 的程序来创建它们ssh-keygen,该程序在 Linux/macOS 系统上随 SSH 包一起提供,并随 Git for Windows 一起提供:

$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local

首先,它确认您要保存密钥的位置 ( .ssh/id_rsa),然后它会询问两次密码,如果您不想在使用密钥时输入密码,可以将其留空。但是,如果您确实使用密码,请确保添加该-o选项;它以一种比默认格式更能抵抗暴力破解密码的格式保存私钥。您还可以使用该ssh-agent工具来避免每次都输入密码。

现在,执行此操作的每个用户都必须将其公钥发送给您或管理 Git 服务器的任何人(假设您正在使用需要公钥的 SSH 服务器设置)。他们所要做的就是复制.pub文件的内容并通过电子邮件发送。公钥看起来像这样:

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local
于 2022-02-03T10:56:24.773 回答