导致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