如何安装PuTTYgen生成的SSH私钥?


49

通过将PuTTYgen生成的公钥添加到authorized_keys文件中,我将Linux服务器设置为接受来自家用PC的连接。

现在,我尝试连接到同一台计算机,但是这次是从另一台Ubuntu计算机连接。我必须使用相同的私钥(出于奇怪的原因,不要问..),而且我不太了解如何在客户端Ubuntu上安装它。

我必须将其转换为其他格式吗?

Answers:


24

我不确定您的私钥是否可以在ubuntu中使用,但是值得一试。只需复制密钥即可/home/yourName/.ssh/将私钥命名为id_rsa,将公钥命名为id_rsa.pub

如果这不起作用,则可以使用创建自己的ssh密钥对ssh-keygen,并将新的公共密钥复制到服务器,然后按以下方式使用ssh

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

我还没有玩过它,但是我听说ssh-agent也可以用来管理ssh-key。


3
这确实在ubuntu中工作。但是,请确保不要覆盖现有的id_rsa密钥(如果已将其复制),除非您知道不使用旧的密钥,否则请先将其复制。
大卫·奥尼尔

5
这个答案完全没有信息,您如何获取id_rsa文件(通过在PuTTYgen中转换密钥)
Martin Prikryl 2015年

38

碰巧的是,我只需要这样做。您确实需要将密钥转换为OpenSSH格式。这样做的命令是:

ssh-keygen -i -f puttygen_key > openssh_key

那么您可以像使用普通SSH密钥一样复制openssh_keyin 的内容.ssh/authorized_keys

-i选项是告诉ssh-keygen您进行转换的选项。该-f选项告诉它在哪里找到要转换的密钥。

这适用于未加密的密钥。公钥未加密,但私钥可能已加密。我不确定是否有一种方法可以对私钥进行解密,转换然后再对其进行加密。正如其他答案所建议的那样,使用新键可能会更容易(并且我建议使用,ssh-agent尽管它与当前问题正交)。


1
这个答案解决了我的问题。我必须转换密钥。谢谢
leticia 2014年

1
这只能通过转换公钥来解决部分问题。我也使用@ user18617的答案来转换私钥。
ᴠɪɴᴄᴇɴᴛ


@ÉdouardLopez puttygen_key应该是您的公钥,而不是私钥(* .ppk)。
endolith '18

28

Andrew Stacey解释了如何在Linux上将密钥转换为OpenSSH格式。

如果要在Windows上执行相同的操作,请按照下列步骤操作:

  1. 启动PuTTYGen。
  2. 点击“加载”。
  3. 选择您的私钥并输入密码。
  4. 从“转换”菜单中,选择“导出OpenSSH密钥”。
  5. 选择目标文件名。

1
我只是想说这在我的Mac OS X上对我有用,即使我知道这是Ubuntu部分。如上所述,我已在Windows中转换了我生成的私钥,然后在我的mac中将其复制到〜/ .ssh / id_rsa。chmod id_rsa 600,以防止Mac抱怨它。
理查德

24

如何在Ubuntu中重用您的Putty密钥对作为OpenSSH密钥:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

由于步骤4的目的是将您的公钥添加到*〜。/ ssh / authorized_keys *,因此您可以像这样使用您的Putty私钥,而不是将4作为中间步骤:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys

1
关于步骤4:如果私钥名称是mykey-sec.ppk,则在这种情况下,源文件名通常是mykey-sec.pub。
Kinjal Dixit 2011年

2
命名公共密钥(大概是RFC 4716格式)mykey-pub.ppk非常令人困惑,因为.ppk文件具有完全不同的格式并且用于密钥对(而不仅仅是公共密钥)。
马丁·普里克里

在debian 9上安装了putty-tools之后,最后的puttygen行对我来说非常理想。这里的其他行和答案都行不通。
蒂姆(Tim)

奇怪的是puttygen: unknown output type `private‐openssh'puttygen: cannot handle more than one input file从源代码中复制了确切的字符,并将我的公钥完全重命名为其他名称
CPHPython

首先,如果您尝试运行此答案中的命令并获得“ puttygen:无法处理多个输入文件”,则可能是因为未将“ private-openssh”中的破折号粘贴为实际的ASCII破折号因此puttygen无法识别它。而是自己输入单词,它应该起作用。
Matt Styles

9

PuTTY / PuTTYgen使用自己专有的密钥对格式。在使用OpenSSH密钥格式的Linux上,它将无法使用。

  • 在PuTTYgen中,您可以直接查看(并复制+粘贴)OpenSSH 文件使用的格式的公共密钥authorized_keys

  • 您可以使用该按钮保存公共密钥保存在公共的密钥.pub格式(RFC 4716)。在Linux上,文件通常命名为id_rsa.pub(或id_dsa.pub)。但这通常是不需要的。

  • 使用转换>导出OpenSSH密钥以OpenSSH格式导出私钥。在Linux上,文件通常命名为id_rsa(或id_dsa),并存储在.ssh文件夹中。

请参阅正式使用PuTTYgen的PuTTY密钥生成器

您也可以使用Linux版本的PuTTYgen进行转换。Linux版本是命令行版本,与Windows版本相反。

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

请参见Linux puttygen手册页


2

我找到了另一种清晰的解决方案。

puttygen创建密钥,然后导航至首页选单-转换,然后单击导出OpenSSH密钥

文件内容将以开头和结尾

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • 对于root用户,将该密钥文件复制到/root/.ssh/as id_rsaid_dsa

  • 对于其他用户,将该密钥文件复制到/home/user/.ssh/as id_rsaid_dsa

注意 :

  1. 无需编辑authorized_keys
  2. 我正在使用Amazon Linux
  3. 档案权限0600

1

* *请注意并确保您对控制台具有控制台访问权限,因为如果操作不正确,您将无法再次进入,直到从控制台修复它为止。

该过程比您想象的要容易得多。再次加载您在puttygen中生成的公钥/私钥对。在puttygen中,您会注意到屏幕中间的窗口显示:“用于粘贴到Open SSHauthorized_keys文件的公钥:”。

突出显示该框的所有内容,然后按Ctrl-c进行复制。

SSH到您的linux框中,并将其粘贴到“ /home/username/.ssh/authorized_keys”文件中。我更喜欢使用nano并单击右键将其粘贴。确保所有内容都保持一行。

根据需要修改/ etc / sshd_config文件,然后重新启动sshd服务:“ service ssh restart”

如果您需要样本sshd_config文件,请告诉我,我可以发布我的文件。

我已经在Ubuntu 8.04、10.04和12.04 LTS服务器上完成了此任务,并且运行流畅。


0

我不确定该线程是否仍然处于活动状态,但是我偶然发现了Windows 10周年纪念版的类似问题,该版本现在支持Ubuntu内核。我以前使用Putty连接到Linux机器。要以Linux格式生成id_rsa,请使用puttykeygen并加载您的putty私钥,然后单击conversion并选择第二个选项。

腻子密钥生成器的重要性

打开新生成的密钥文件并复制所有内容,请确保您的内容以:----- BEGIN RSA PRIVATE KEY -----开头,并以----- END RSA PRIVATE KEY -----结尾

在〜/ .ssh目录中的vi id_rsa并粘贴复制的内容,这是必需的,因为linux否则将无法理解文件的内容。

就是这样,尝试ssh到远程服务器,它应该可以工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.