GitHub 上的“密钥无效”消息

我已经为一个新的服务器安装生成了 SSH 密钥,按照 给你所概述的过程。但是,当我将 id_rsa.pub的内容复制到 GitHub 上的密钥列表中时,会得到错误消息“ Key 是无效的。确保正确复制了文件。”

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

有人知道这是怎么回事吗?

186699 次浏览

如果你确实复制了你的 id_rsa.pub键的内容(在一个连续的行) ,结果应该像(从 GitHub ssh 帮助页面) :

ssh key

路易斯安那观察所 证实了复制粘贴问题:

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

我来这里是因为我也有同样的问题。从你的问题,我意识到我从错误的文件,没有.pub扩展名(这是我的私人密钥,即 id_rsa文件,应该保持私有的所有时间!)

来自 MAC 的消息:

vi ~/.ssh/id_rsa.pub

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

如果它不工作,你肯定没有正确复制。

成功了。

如果你使用 窗户,使用记事本和复制粘贴如上所述。

希望这有帮助。

下面是一些在复制/粘贴公钥时完全不清楚的步骤。(声明一下,我用 Putty Key Generator 做钥匙。)

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

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

我尝试了几种方法,但都没有用(我的操作系统是 ubuntu)。然后我想如果我可以打印的内容 ~/。Ssh/id _ rsa.通过使用命令“ more”发布。

我很抱歉比我没有声誉发布图片! 当我有,我会发布它!

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

enter image description here

我从命令行中复制了内容,它起作用了! ! !

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

如果您使用 Sublime,您可以正确地查看 ssh-key。 检查是否有 id _ rsa. pub

ls -al ~/.ssh

如果它是在地方打开它与崇高的文本

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

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

GitHub 推荐 by < strong > GitHub

复制 SSH-KEY:

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

1. 安装 xclip

sudo apt-get install xclip

2. 用 xclip复制

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


祝你好运。

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

从我的酒吧密钥直接从命令行 pbcopy 不工作。来自 gitlab 的拷贝,最后多了一条白色规则,成功了。

在窗户上,

只需从密钥文件中复制裸密密钥数据,然后 < strong > 删除新行。 把下面的内容写在对话框里来解决你的问题。 Ssh-rsa Key

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

你完蛋了。

我只是有个问题。超级沮丧。我想我的情况可能影响了问题的起因。我正在使用平板电脑,试图通过我的平板电脑浏览器(Chrome)在 githubs 网站上设置密钥,我正在从连接到我的远程 linux 服务器的 ssh 应用程序中复制密钥。

最后的结果是,当我把密钥复制到浏览器时,它引入了一些换行符。不仅如此,它还从插入新行的每个点删除了一个字符。

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

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

希望这能帮到其他人。我不知道为什么会这样。愚蠢的是,复制到剪贴板将改变文本复制。我还抄了 Vim 的。

尽管直接从终端(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 的这个问题。

如果你使用 bash 作为 windows 的终端,并且通过 shift + 高亮显示 + ctrl-c 进行复制,那么这个解决方案可能适合你:

  1. 复制钥匙并粘贴到记事本上之后:

example ssh key

  1. 现在进入编辑 > 选择全部或 Ctrl-A

text highlighted

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

enter image description here

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

enter image description here

我知道这个问题现在已经是一个下士的问题了,但是如果在2018年有人遇到这个问题:

下面是一个显而易见的问题:

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

身份证

而不是 公开密码匙的内容

Id _ rsa. 酒吧

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

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

请记住要复制的 。酒吧文件扩展名:

  • OSX :

Pbcopy < ~/. ssh/id _ rsa. 酒吧

  • Linux :

Xlip-sel 剪辑 < ~/. ssh/id _ rsa. 酒吧

  • Windows PowerShell

Cat ~/. ssh/id _ rsa. 酒吧 | 剪辑


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

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

这是我们在生成密钥时面临的共同问题。在生成 SSH 时,我们将得到两个 diff 文件,一个是 id _ rsa,另一个是 id _ rsa。酒吧。这里扩展名为 pub 的文件是公钥持有者文件。您必须从该文件复制内容并添加到 Github。

备注: 1. 公钥文件内容以‘ SSH-RSA’开头 2.以你的 Github 电子邮件 ID 结束。例如: 如果你用@gmail.com 注册了 Github,那么酒吧文件最后会有指定的电子邮件 ID

如果使用 vs 代码

Code ~/. ssh/id _ rsa. pub 将打开 .pub文件复制到 github

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

因此,我在 windows 机器上使用 $ cat ~/.ssh/id_rsa.pub命令在终端上打印出来,然后复制它。

将 id _ rsa. pub 的全部内容复制到剪贴板:

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

我试图上传我的公开密钥,却收到了“无效密钥”的消息。我的格式不合适,因为在密钥的末尾有额外的空格。它的格式应该是: ssh-rsa <public-key>

只要尝试安装 wps2019并打开 wps2019上的.pub,然后复制代码并粘贴它:

如果你使用的是 linux 或者 mac 系统,只需要执行以下操作:

$ cat ~/.ssh/id_rsa.pub

产出应采用如下形式:

ssh-rsa somerandomcharacters user@domain

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

将 ssh 公钥复制到剪贴板是这里的主要技巧,最好的方法是从终端进行复制。按回车键。Ssh public 将显示在 GitBash 终端屏幕上,然后您只需要通过 < strong > 从电子邮件的最后一个字符中选择到密钥的开头,即 ssh rsa..。 我花了几天时间,最终得出了这个解决方案。

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

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

enter image description here

我使用的是 windows 操作系统,但由于某些原因,它不适合我:

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

我找到了隐藏的 .ssh文件夹的地址: C:\Users\g1100_000\.ssh 你会看到酒吧文件如下:

enter image description here

用代码编辑器打开它,然后简单地将密钥复制到 github。 希望这个能帮到你。

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

按照下面的说明从头开始,您将能够排序这个问题。

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

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

您正在寻找一对名为 id_dsaid_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

我的答案只适用于 PuTTY 键生成器和 Bitbucket 回购。您可以通过其他一些方式生成密钥对,查看其他答案。

使用 Putty Key Gen 创建2048位或更高的 RSA 密钥。私钥可以受密码保护,也可以不受密码保护。生成两个密钥(文件)后,该工具将显示您的公钥 在上面的窗户。这是我的钥匙的一个例子,为了安全而刮下来的。注意两个关键部分: ssh-rsa 和后面的注释。

大多数人浏览到他们的公共文件,在编辑器中打开并将内容复制/粘贴到 Bitbucket“ access-keys”窗口中。该文件缺少“ ssh-rsa”前缀和 Bitbucket 拒绝密钥。

Ssh-rsa BBBBBFHHFDS... . 7 < strong > rsa-key-20220706

确保在 ssh 键之后添加一个空格。这为我解决了问题

通过在 贱人终端发出以下命令来复制公钥

Cat ~/. ssh/id _ rsa. pub

你会得到一个 SSH 密钥。粘贴到以下格式与前缀 Ssh-rsa 你的 ssh 键然后 电邮地址(xyz@gmail.com)。键会比较大,所以在这里直接复制粘贴键之前,尽量使用记事本保持相同的格式,完全从头复制。

Ssh-rsa pasteyourSSHkey xyz@domain.com

Ubuntu 22.04 LTS上,我做了这样一件事:

  1. 终端类型: ssh-keygen,这将自动创建代码,如果你不想设置任何密码,按键进入。密码就在里面 /home/computer_name/.ssh/id_rsa

  2. 键入 vi ~/.ssh/id_rsa.pub,您将看到 SSH 密钥并复制它

ssh-rsa
blablablaUSERNAME@ComputerName
  1. 转到 github account setting >> SSH and GPU keys >> New SSH key >> (without title, title did not work for me)并粘贴

希望将来能对某人有所帮助。详情请参阅 给你

你需要打开 id _ rsa。酒吧档案。复制所有文本(包括您的电子邮件地址)并粘贴到关键文本框

GitHub 上的 SSH 输入示例