正如Roland 在他们的回答中提到的,这是一个警告,ssh-agent 不理解公钥的格式,即使那样,公钥也不会在本地使用。
但是,我也可以详细说明并回答为什么会出现警告。归根结底,PuTTY 密钥生成器会根据您在程序中执行的操作生成两种不同的公钥格式。
注意:在我的解释中,我将使用/生成的关键文件将命名为id_rsa,并带有相应的扩展名。此外,为了方便复制粘贴,将假定密钥的父文件夹为~/.ssh/。根据需要调整这些细节以满足您的需要。
格式
Link to the relevant PuTTY documentation
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 授权密钥文件中的公钥”的文本框中。要将其保存为文件,您必须手动将其从文本框中复制并粘贴到新的文本文件中。
对于上面显示的键,这将是:
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 文件),则需要先转换它。
- 打开 PuTTY 密钥生成器
- 在菜单栏上,点击“文件”>“加载私钥”
- 选择您的
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
##参考:##