首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >key_load_public:无效格式

key_load_public:无效格式
EN

Stack Overflow用户
提问于 2017-03-17 17:37:28
回答 14查看 351.3K关注 0票数 137

我使用PuTTY密钥生成器生成一个带有密码的4096位RSA-2密钥.

我保存.ppk和openSSL格式的公钥。putty格式的公钥无效。

无论如何,我的错误如下:

代码语言:javascript
运行
复制
$ 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中添加一个新行,而不是添加一个新行

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2017-06-06 13:48:20

正如罗兰在他们的答复中提到的那样,这是一个警告,即ssh-agent不理解公钥的格式,即使这样,公钥也不会在本地使用。

然而,我也可以详细解释和回答为什么会有这样的警告。它简单地归结为这样一个事实: PuTTY密钥生成器生成两种不同的公钥格式,取决于您在程序中所做的工作。

注意:在我解释的整个过程中,我将要使用/生成的关键文件都将被命名为带有相应扩展名的id_rsa。此外,为了便于复制粘贴,键的父文件夹将被假定为~/.ssh/。根据需要调整这些细节以满足您的需要。

格式

链接到相关的PuTTY文档

SSH-2

当您使用使用“保存公钥”按钮的密钥生成器保存时,它将以RFC 4716定义的格式保存。

示例:

代码语言:javascript
运行
复制
---- 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文件中的公钥”。要将其保存为文件,必须从文本框中手动复制它并将其粘贴到新的文本文件中。

对于上面所示的关键,这将是:

代码语言:javascript
运行
复制
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公钥文件:

代码语言:javascript
运行
复制
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

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

  1. 打开PuTTY密钥生成器
  2. 在菜单栏上,单击"File“> "Load private key”
  3. 选择您的id_rsa.ppk文件
  4. 在菜单栏上,单击“反转”>“导出OpenSSH键”
  5. 将文件保存为id_rsa (没有扩展名)

现在您有了一个OpenSSH私钥,您可以使用上面的ssh-keygen工具对密钥执行操作。

奖励: PKCS#1 PEM编码的公钥格式

老实说,我不知道这把钥匙是干什么用的,因为我不需要它。但是我把它写在我的笔记里,这些年来我一直在整理它,我会把它写在这里,以求有益健康。该文件将如下所示:

代码语言:javascript
运行
复制
-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----

该文件可以使用OpenSSH私钥(如上面“重新生成公钥”中生成的)使用以下方法生成:

代码语言:javascript
运行
复制
ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem

或者,您可以使用以下方法使用OpenSSH公钥:

代码语言:javascript
运行
复制
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem

##References:##

票数 224
EN

Stack Overflow用户

发布于 2019-12-05 10:36:49

如果您可以安装和使用puttygen工具,那么有一个简单的解决方案。下面是步骤。你应该有私钥的密码。

步骤1:下载最新的帕蒂根并打开puttygen

步骤2:加载您现有的私钥文件,请参见下面的图像

步骤3:输入密码,如果被问到,按ok键

步骤4:如下图所示,选择“转换”菜单选项卡并选择“导出OpenSSH键”

将新的私钥文件保存在首选位置并相应使用。

票数 33
EN

Stack Overflow用户

发布于 2020-06-28 03:48:48

TL;DR:还确保您的id_rsa.pub在ascii / UTF-8中。

我也遇到了同样的问题,但是被接受的答案由于文本编码而无法工作,这是另外一个很容易忽略的问题。

当我跑的时候

代码语言:javascript
运行
复制
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不识别以前的文本编码,并产生一个相同的错误:

代码语言:javascript
运行
复制
key_load_public: invalid format

ssh-keygen -f ~/.ssh/id_rsa -y的输出复制并粘贴到文本编辑器中是解决这一问题的最简单方法。

这可能是被接受的答案的一个补充,但我还没有足够的业力在这里发表评论。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42863913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档