如何将使用PuttyGen(Windows)生成的SSH密钥对转换为由ssh-agent和KeyChain(Linux)使用的密钥对

我使用PuttyGen生成密钥对并使用Pageant进行login,因此我的系统引导时只需input一次密码即可。

我如何在Linux中实现这一目标? 我听说过keychain但是我听说它使用了不同的密钥对格式 – 我不想更改我的Windows密钥,如果我可以在Windows和Linux中以相同的方式无缝连接,那将会很好。

8 Solutions collect form web for “如何将使用PuttyGen(Windows)生成的SSH密钥对转换为由ssh-agent和KeyChain(Linux)使用的密钥对”

puttygen支持将您的私钥导出为OpenSSH兼容格式。 然后您可以使用OpenSSH工具重新创build公钥。

  1. 打开PuttyGen
  2. 点击加载
  3. 加载你的私钥
  4. 转到Conversions->Export OpenSSH并导出您的私钥
  5. 将您的私钥复制到~/.ssh/id_dsa (或id_rsa )。
  6. 使用ssh-keygen创build公钥的RFC 4716版本

     ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub 
  7. 将RFC 4716版本的公钥转换为OpenSSH格式:

     ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub 

看到这个和这个更多的信息。

如果您拥有的是PuTTY风格格式的用户的公钥,则可以将其转换为标准的openssh格式,如下所示:

 ssh-keygen -i -f keyfile.pub > newkeyfile.pub 

资料来源: http : //www.treslervania.com/node/408

较新版本的PuTTYgen (我的是0.64)能够在.ssh/authorized_keys文件中显示OpenSSH公钥被粘贴到linux系统中,如下图所示:

在这里输入图像描述

或者,如果要从PuTTY格式的密钥文件中获取私钥和​​公钥,则可以在* nix系统上使用puttygen 。 对于大多数基于apt的系统, puttygenputty-tools软件包的一部分。

从PuTTY格式的密钥文件输出一个私钥:

$ puttygen keyfile.pem -O private-openssh -o avdev.pvk

对于公钥:

$ puttygen keyfile.pem -L

我最近遇到了这个问题,因为我正在从Putty for Linux转向Remmina for Linux。 所以我有很多PPK文件在我的.putty目录中,因为我已经使用了8年了。 为此,我使用了一个简单for命令bash shell来完成所有文件:

 cd ~/.putty for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done; 

非常迅速,重要的是,为腻子所有的文件完成了工作。 如果find带有密码的密钥,它将停止并首先要求input该密码的密码,然后继续。

在linux下创build你的密钥可能比较容易,并使用PuTTYgen把密钥转换为PuTTY格式。

PuTTY Faq:A.2.2

 sudo apt-get install putty 

这将自动安装puttygen工具。

现在要转换PPK文件以使用SSH命令在terminal执行以下操作

 puttygen mykey.ppk -O private-openssh -o my-openssh-key 

然后,您可以通过SSH连接:

 ssh -v user@example.com -i my-openssh-key 

http://www.graphicmist.in/use-your-putty-ppk-file-to-ssh-remote-server-in-ubuntu/#comment-28603

我想TCSgrad在几年前想问的是如何使Linux像Windows机器一样运行。 也就是说,有一个代理(pageant),它拥有一个私钥的解密副本,所以这个密码只需要放入一次。 然后,ssh客户端putty可以在没有密码提示的情况下login到其公钥被列为“授权”的机器。

模拟的是, 充当ssh客户端的 Linux有一个代理持有一个解密的私钥,这样当TCSgrad键入“ssh host”时,ssh命令将获得他的私钥并且不会被提示input密码。 主机当然必须持有〜/ .ssh / authorized_keys中的公钥。

这种情况下的Linux模拟是通过使用ssh-agent(选美模拟)和ssh-add(类似于向pageant添加私钥)完成的。

为我工作的方法是使用:$ ssh-agent $ SHELL $ SHELL是我需要让代理运行并保持运行的魔术。 我发现在网上的某个地方,结束了几个小时,我的头靠在墙上。

现在我们有一个运行的类比,一个没有加载密钥的代理。

input$ ssh-add将自动添加(默认情况下)在〜/ .ssh默认身份文件中列出的私钥。

一个networking文章有很多更多的细节可以在这里find

  • 如何validation/检查/testing/validation我的SSH密码?
  • Linux上的SSH:禁用本地子网上主机的主机密钥检查(known_hosts)
  • SSH密钥 - 仍然要求input密码和密码
  • Ansible SSH私钥在源代码pipe理?
  • 我可以使用RSA密钥在本地testing身份validation吗?
  • 如何使用“stream浪ssh”ssh代理转发?
  • 如何在两种公钥格式之间转换,一个是“BEGIN RSA PUBLIC KEY”,另一个是“BEGIN PUBLIC KEY”
  • 如何删除一个SSH密钥?
  • 通过SSHconfigurationGitlogin一次
  • 如何处理“PTY通道0上的PTY分配请求失败”
  • 在一个客户端上使用多个SSH私钥的最佳方法