我已根据此处概述的过程为新服务器安装生成了 SSH 密钥。但是,当我将内容复制id_rsa.pub
到 GitHub 上的密钥列表时,我收到错误消息“密钥无效。确保您已正确复制文件。”
生成的密钥是有效的,我正在完全按原样复制它(全部在一行中,开头/结尾没有空格)。
有人知道会发生什么吗?
我来这里是因为我有同样的问题。从您的问题中,我意识到我正在从错误的文件中复制内容,没有扩展.pub
名(这是我的私钥,即id_rsa
文件,应该始终保密!)
从 MAC:
vi ~/.ssh/id_rsa.pub
从字符块的末尾(电子邮件域扩展名的最后一个字母)精确复制到开头,以ssh-rs ...
如果它不起作用,那么您肯定没有正确复制。
有效。
如果您在Windows上,请使用记事本并如上所述复制粘贴。
我希望这有帮助。
以下是一些在复制/粘贴公钥时根本不清楚的步骤。(作为记录,我使用 Putty Key Generator 作为我的密钥。)
注意在这个截图中,ssh-rsa 后面有一个空格(见光标。) 公钥文本还包含三个 \n 字符,因此您可以看到公钥文本在文本框中三次向下跳到下一行。
我知道这是一个 cpl 岁的问题,但如果有人在 2018 年遇到这个:
那么下面是显而易见的:
我的问题是我试图复制私钥
id_rsa
而不是公钥内容
id_rsa。酒馆
作为我的 SSH gitlab 存储库密钥,所以在你之后:
ssh-keygen -t rsa -C "your@email.com" -b 4096
请记住要从以下位置复制
的.pub文件扩展名:
pbcopy < ~/.ssh/id_rsa. 酒馆
xclip -sel 剪辑 < ~/.ssh/id_rsa。酒馆
猫 ~/.ssh/id_rsa. 酒吧| 夹子
这很有意义,因为您应该始终只共享您的公钥,而不是私钥:)
我尝试了几种方法,但都没有帮助(我的操作系统是 ubuntu)。然后我想我是否可以使用命令“more”打印~/.ssh/id_rsa.pub 的内容。
对不起,我没有发布图片的声誉!当我有时,我会发布它!
这是一个您可以看到图像的网址:
我从命令行复制了内容,它工作了!!!
有人建议使用, $ vi ~/.ssh/id_rsa.pub
但它对我不起作用。
所以代替那个,我$ cat ~/.ssh/id_rsa.pub
在 Windows 机器上使用命令在终端上打印出来然后复制它。
如果您确实复制了id_rsa.pub
密钥的内容(在一行中),结果应该如下所示(来自 The GitHub ssh help page):
- 由于一个非常模糊的原因,从 emacs 复制粘贴删除了
\n
after ssh-rsa,这就是导致问题的原因。- 从 vi 复制粘贴解决了这个问题。
GitHub推荐_
SSH-KEY
:我一起xclip
复制id_rsa.pub
密钥,如下所示:
xclip
sudo apt-get install xclip
xclip
xclip -sel clip < ~/.ssh/id_rsa.pub
祝你好运。
在窗户里,
只需从密钥文件中复制裸密钥数据并删除新行。 在对话框中写下以下内容以解决您的问题。ssh-rsa 密钥
注意:ssh-rsa 和密钥之间有空格
你完成了。
对于那些展望未来的人来说,另一个常见的问题是自动换行。例如,如果您运行它可以换行,从而在每个换行符处cat ~/.ssh/id_rsa.pub
添加额外的字符。\
删除这些,您的密钥应该可以正常工作。
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 上没有这个问题。
这是我们在生成密钥时面临的常见问题。在生成 SSH 时,我们会得到两个 diff 文件,一个是 id_rsa 和 id_rsa.pub。这里带有 pub 扩展名的文件是公钥持有者文件。您必须从该文件中复制内容并添加到 Github。
注意: 1. 公钥文件内容以“SSH-RSA”开头 2. 以您的 Github 电子邮件 ID 结尾。例如:如果您使用 @gmail.com 注册了 Github,那么 pub 文件最后具有指定的电子邮件 ID
我的笔记本电脑在 macOS Big Sur 版本 11.3.1 上,并ssh-keygen -t rsa
在开头生成了一个非常长的密钥 ssh-rsa-cert-v01@openssh.com。
ssh-keygen -t rsa -b 4096
工作过;它使用 ssh-rsa 算法创建了一个密钥。
如果您使用 Sublime,您可以正确看到 ssh-key。检查是否有任何 id_rsa.pub
ls -al ~/.ssh
如果它到位,用崇高的文字打开它
sudo subl /home/user_name/.ssh/id_rsa.pub
然后复制并粘贴您的公共 ssh 密钥。
在我的情况下,我必须在我的电子邮件之后(在整个密钥字符串之后)添加一个额外的白色规则,然后才能被接受。在尝试复制在 Gitlab 上输入的 ssh 密钥后,我偶然发现了这一点。
来自我的 pub 密钥的 pbcopy 直接从命令行不起作用。来自 gitlab 的副本,最后带有额外的白色规则,成功了。
我刚遇到这个问题。超级沮丧。我想我的情况可能会影响问题的原因。我正在使用平板电脑,尝试通过平板电脑浏览器(Chrome)在 githubs 站点上设置密钥,并且我正在从连接到远程 linux 服务器的 ssh 应用程序复制密钥。
最终发生的事情是,当我将密钥复制到浏览器时,它引入了许多换行符。不仅如此,它还从插入新行的每个点删除了一个字符。
所以为了让它工作,我必须手动找到每个新的换行符,然后寻找那个部分的键来找到丢失的字符。然后我添加了字符并删除了新行。在我追查每一个变化之后,钥匙工作得很好。
顺便说一句,我自己并没有添加任何新的换行符,例如ssh-rsa之后其他人提到的那个。
希望这对其他人有帮助。我不知道为什么会这样。愚蠢的是,复制到剪贴板会改变复制的文本。哦,我也是直接从 Vim 中复制出来的。
如果使用 vs 代码
code ~/.ssh/id_rsa.pub
将打开.pub
文件复制到github
将 id_rsa.pub 的全部内容复制到剪贴板:
运行 > pbcopy ~/.ssh/id_rsa.pub
我试图上传我的公钥并收到“无效密钥”消息。我的格式不正确,因为密钥末尾有多余的空格。它应该是格式:ssh-rsa <public-key>
如果您使用的是 linux 或 mac,只需执行以下操作:
$ cat ~/.ssh/id_rsa.pub
输出应采用如下形式:
ssh-rsa somerandomcharacters user@domain
最后一步是复制内容并将其粘贴到您的目的地
将 ssh 公钥复制到剪贴板主要是这里的技巧,最好的方法是直接从终端。您必须通过以下命令将此密钥输出到终端上, cat ~/.ssh/id_rsa.public
然后按回车键。ssh public 将显示在 GitBash 终端屏幕上,然后您只需从电子邮件的最后一个字符到密钥的开头选择仔细复制它,即 ssh rsa ...
我花了几天时间,然后最终得出了这个解决方案.
$ cat /c/Users/User/.ssh/id_rsa.pub 使用此命令代替 $ cat /c/Users/User/.ssh/id_rsa
只需尝试安装 wps2019 并打开 wps2019 上的 .pub 并复制代码并粘贴即可:
从头开始按照以下说明进行操作,您将能够解决此问题。
许多 Git 服务器使用 SSH 公钥进行身份验证。为了提供公钥,系统中的每个用户都必须生成一个,如果他们还没有公钥的话。这个过程在所有操作系统中都是相似的。首先,您应该检查以确保您还没有密钥。默认情况下,用户的 SSH 密钥存储在该用户的 ~/.ssh 目录中。您可以通过转到该目录并列出内容来轻松检查您是否已经拥有密钥:
$ cd ~/.ssh
$ ls
authorized_keys2 id_dsa known_hosts
config id_dsa.pub
您正在寻找一对名为id_dsa
orid_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