我使用PuTTY密钥生成器生成一个带有密码的4096位RSA-2密钥.
我保存.ppk和openSSL格式的公钥。putty格式的公钥无效。
无论如何,我的错误如下:
$ ssh -T git@github.com
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide shell access.
有什么问题吗?
我使用Pageant加载密钥,使用Git Bash尝试ssh连接。我还将密钥加载到GitHub中,不确定我做错了什么。
我尝试在GitHub中添加一个新行,而不是添加一个新行
发布于 2017-06-06 13:48:20
正如罗兰在他们的答复中提到的那样,这是一个警告,即ssh-agent
不理解公钥的格式,即使这样,公钥也不会在本地使用。
然而,我也可以详细解释和回答为什么会有这样的警告。它简单地归结为这样一个事实: PuTTY密钥生成器生成两种不同的公钥格式,取决于您在程序中所做的工作。
注意:在我解释的整个过程中,我将要使用/生成的关键文件都将被命名为带有相应扩展名的id_rsa
。此外,为了便于复制粘贴,键的父文件夹将被假定为~/.ssh/
。根据需要调整这些细节以满足您的需要。
格式
SSH-2
当您使用使用“保存公钥”按钮的密钥生成器保存时,它将以RFC 4716定义的格式保存。
示例:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "github-example-key"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYF
i2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcp
pY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3
oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEA
ip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9
tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw==
---- END SSH2 PUBLIC KEY ----
OpenSSH
与流行的观点相反,这种格式不会被生成器保存。但是,它将生成并显示在文本框中,标题为“用于粘贴到OpenSSH authorized_keys文件中的公钥”。要将其保存为文件,必须从文本框中手动复制它并将其粘贴到新的文本文件中。
对于上面所示的关键,这将是:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key
键的格式是简单的ssh-rsa <signature> <comment>
,可以通过重新排列SSH-2格式的文件来创建。
再生公钥
如果您正在使用ssh-agent
,则很可能还可以访问ssh-keygen
。
如果您拥有OpenSSH私钥(id_rsa
文件),则可以使用以下方法生成OpenSSH公钥文件:
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
如果您只有PUTTY私钥(id_rsa.ppk
文件),则需要首先转换它。
id_rsa.ppk
文件id_rsa
(没有扩展名)现在您有了一个OpenSSH私钥,您可以使用上面的ssh-keygen
工具对密钥执行操作。
奖励: PKCS#1 PEM编码的公钥格式
老实说,我不知道这把钥匙是干什么用的,因为我不需要它。但是我把它写在我的笔记里,这些年来我一直在整理它,我会把它写在这里,以求有益健康。该文件将如下所示:
-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----
该文件可以使用OpenSSH私钥(如上面“重新生成公钥”中生成的)使用以下方法生成:
ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem
或者,您可以使用以下方法使用OpenSSH公钥:
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem
##References:##
发布于 2019-12-05 10:36:49
如果您可以安装和使用puttygen工具,那么有一个简单的解决方案。下面是步骤。你应该有私钥的密码。
步骤1:下载最新的帕蒂根并打开puttygen
步骤2:加载您现有的私钥文件,请参见下面的图像
步骤3:输入密码,如果被问到,按ok键
步骤4:如下图所示,选择“转换”菜单选项卡并选择“导出OpenSSH键”
将新的私钥文件保存在首选位置并相应使用。
发布于 2020-06-28 03:48:48
TL;DR:还确保您的id_rsa.pub
在ascii / UTF-8中。
我也遇到了同样的问题,但是被接受的答案由于文本编码而无法工作,这是另外一个很容易忽略的问题。
当我跑的时候
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
在Windows PowerShell中,它以UTF-16 LE BOM编码将输出保存到id_rsa.pub
,而不是以UTF-8保存。这是PowerShell的一些安装的属性,在使用PowerShell在UTF-8中编写没有BOM的文件。中进行了讨论。显然,OpenSSH不识别以前的文本编码,并产生一个相同的错误:
key_load_public: invalid format
将ssh-keygen -f ~/.ssh/id_rsa -y
的输出复制并粘贴到文本编辑器中是解决这一问题的最简单方法。
这可能是被接受的答案的一个补充,但我还没有足够的业力在这里发表评论。
https://stackoverflow.com/questions/42863913
复制相似问题