导致key_load_public: invalid format这个原因由于ssh-agent不了解公钥的格式的一个警告,公钥也不会在本地被使用。

简单地归结为密钥生成时的格式问题,这是由于生成两种不同的公钥格式。

注意:在本文中,我将使用/生成的关键文件将以id_rsa适当的扩展名命名。此外,为了方便复制粘贴,将假定密钥的默认文件夹是~/.ssh/ 你可以根据实际情况来进行调整

SSH-2

当您保存使用的关键PuTTY密钥生成使用“保存公钥”按钮,它将被保存在由定义的格式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
+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmw
LBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3Dzn
VzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9n
TyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3
bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-ex
ample-key

密钥的格式很简单ssh-rsa ,可以通过重新排列SSH-2格式的文件来创建。

重新生成公钥

如果您正在使用ssh客户端,您可能也可以访问ssh-keygen。

如果您有OpenSSH私钥(id_rsa文件),则可以使用以下命令生成OpenSSH公钥文件:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

如果您只有PUTTY私钥(id_rsa.ppk文件),则需要先进行转换。

打开PuTTY Key Generator
在菜单栏上,单击“文件”>“加载私钥”
选择你的id_rsa.ppk文件
在菜单栏上,单击“转换”>“导出OpenSSH密钥”
将文件另存为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

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

zh_CNChinese
en_USEnglish zh_CNChinese