Jor*_*nGS 64 git ssh github public-key
我使用PuTTY Key Generator生成带密码的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.
Run Code Online (Sandbox Code Playgroud)
有什么问题?
我使用Pageant来加载密钥,我使用Git Bash来尝试ssh连接.我还把密钥加载到GitHub中,不知道我做错了什么.
我尝试添加一个新行,而不是在GitHub中添加新行
sam*_*man 122
正如Roland在回答中提到的那样,这是一个警告,即ssh-agent
不了解公钥的格式,即使这样,公钥也不会在本地使用.
但是,我也可以详细说明并回答警告的原因.它简单地归结为PuTTY密钥生成器根据您在程序中执行的操作生成两种不同的公钥格式.
注意:在我的解释中,我将使用/生成的关键文件将以id_rsa
适当的扩展名命名.此外,为了方便复制粘贴,将假定密钥的父文件夹~/.ssh/
.根据需要调整这些细节以满足您的需求.
当您保存使用的关键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 ----
Run Code Online (Sandbox Code Playgroud)
与流行的看法相反,这种格式不会被生成器保存.但是它会生成并显示在标题为"粘贴到OpenSSH authorized_keys文件的公钥"的文本框中.要将其另存为文件,您必须从文本框中手动复制它并将其粘贴到新的文本文件中.
对于上面显示的键,这将是:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key
Run Code Online (Sandbox Code Playgroud)
密钥的格式很简单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
Run Code Online (Sandbox Code Playgroud)
如果您只有PUTTY私钥(id_rsa.ppk
文件),则需要先进行转换.
id_rsa.ppk
文件id_rsa
(没有扩展名)现在您已拥有OpenSSH私钥,您可以使用上述ssh-keygen
工具对密钥执行操作.
说实话,我不知道这把钥匙用的是什么,因为我不需要它.但是我在我多年来整理的笔记中都有它,我会把它包含在这里以获得健康的善良.该文件将如下所示:
-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
可以使用OpenSSH私钥(在上面的"重新生成公钥"中生成)使用以下命令生成此文件:
ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用OpenSSH公钥:
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem
Run Code Online (Sandbox Code Playgroud)
Pra*_*ama 23
如果您可以安装和使用 puttygen 工具,则有一个简单的解决方案。下面是步骤。您应该拥有私钥的密码。
第一步:下载最新的puttygen并打开puttygen
第 2 步:加载您现有的私钥文件,见下图
第 3 步:如果询问,请输入密钥的密码并点击确定
第 4 步:如下图所示,选择“转换”菜单选项卡并选择“导出 OpenSSH 密钥”
在首选位置保存新的私钥文件并相应地使用。
pap*_*ees 10
TL;DR:还要确保您id_rsa.pub
的格式为 ascii / UTF-8。
我遇到了同样的问题,但是由于文本编码,单独接受的答案不起作用,这是一个额外的,容易错过的问题。
当我跑
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
在Windows PowerShell中,这样可以节省输出id_rsa.pub
在UTF-16 LE BOM编码,而不是UTF-8 。这是 PowerShell 的某些安装的一个属性,在使用 PowerShell 以 UTF-8 编写没有 BOM 的文件中讨论过。显然,OpenSSH 无法识别以前的文本编码并产生相同的错误:
key_load_public: invalid format
Run Code Online (Sandbox Code Playgroud)
将 的输出复制并粘贴ssh-keygen -f ~/.ssh/id_rsa -y
到文本编辑器中是解决此问题的最简单方法。
PS 这可能是对已接受答案的补充,但我还没有足够的业力在这里发表评论。
使用以下命令生成 id_rsa 和 id_rsa.pub 文件:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)
然后 :
1) Place file in id_rsa.pub into ~/.ssh/id_rsa.pub
2) sudo chmod 600 ~/.ssh/id_rsa.pub
3) Place file id_rsa into ~/.ssh/id_rsa
Now ~/.ssh contains two files..~/.ssh/id_rsa.pub and ~/.ssh/id_rsa
4) ssh-add ~/.ssh/id_rsa
5) Enter the passphrase entered during creation of id_rsa
Output :
Identity added: /home/jay/.ssh/id_rsa (/home/jay/.ssh/id_rsa)
Run Code Online (Sandbox Code Playgroud)
现在您无需输入用户名密码即可推拉
小智 7
如果您使用剪贴板复制您的公钥并粘贴它,则可能会发生包含换行符的公钥字符串可能会被破坏。
Make sure your public key string formed as one line.
似乎ssh
无法读取您的公钥。但这没关系。
您将公共密钥上载到github,但是您使用私钥进行了身份验证。请参见中的“文件”部分ssh(1)
。
归档时间: |
|
查看次数: |
126671 次 |
最近记录: |