如何将PuTTYgen生成的SSH密钥对转换为SSH -agent和Keychain使用的密钥对(Linux)

我已经使用PuTTYgen生成了密钥对,并一直使用Pageant登录,因此当系统启动时,我只需输入一次密码短语。

如何在Linux中实现这一点?我听说过keychain,但我听说它使用了不同的密钥对格式-我不想改变我的Windows密钥,如果我能在Windows和Linux中以相同的方式无缝连接就太好了。

627964 次浏览

在linux下创建密钥并使用PuTTYgen将密钥转换为PuTTY格式可能更容易。

PuTTY常见问题:a .2.2 . 0 . 0

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

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

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
    
  7. Convert the RFC 4716 version of the public key to the OpenSSH format:

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

See this and this for more information.

如果你只有一个用户的putty格式的公钥,你可以把它转换成标准的openssh格式,如下所示:

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

参考文献

文章副本

我总是忘记这个,所以我把它写在这里。凡人,就 一直走。< / p > 在Windows上创建密钥最常见的方法是使用Putty/Puttygen。 Puttygen提供了一个简洁的实用工具来将linux私钥转换为 腻子的格式。但是,没有解决的是,当您保存 公钥使用puttygen在Linux服务器上不起作用。窗户 将一些数据放在不同的区域并添加换行符 解决方案:当你在创建你的 puttygen中的密钥对,复制公钥并将其粘贴到文本中 扩展名为.pub的文件。您将节省系统管理员的时间

但是,系统管理员总是会得到抛出的不稳定的密钥文件 在认证日志中没有错误消息,除了,没有找到密钥,正在尝试 密码;尽管其他人的钥匙都没问题,而且

.

.

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

应该将现有的puttygen公钥转换为OpenSSH格式。

我认为tscsgrad(几年前)想要问的是如何让Linux像他的Windows机器那样运行。也就是说,存在一个代理(pageant),它持有私有密钥的解密副本,因此只需输入一次密码短语。然后,ssh客户端putty可以登录到其公钥被列为“已授权”的计算机,而无需密码提示。

类似的情况是,Linux 作为SSH客户端有一个持有解密私钥的代理,这样当tscsgrad键入“ssh host”时,ssh命令将获得他的私钥,并且不会提示输入密码。当然,主机必须持有~/.ssh/authorized_keys中的公钥。

这个场景的Linux模拟是使用ssh-agent(模拟pageant)和ssh-add(模拟向pageant添加私钥)完成的。

对我来说有效的方法是: $ ssh-agent $SHELL 这个$SHELL是我需要的使代理运行并保持运行的魔术。我在网上的某个地方找到了它,它结束了我几个小时的埋头苦干

现在我们有了选美运行的模拟,一个没有加载键的代理。

< p >打字 ssh-add美元 它本身将添加(默认情况下)在~/中的默认标识文件中列出的私钥。ssh . < / p >

有更多细节的网络文章可以找到在这里

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

从PuTTY格式的密钥文件中输出私钥。

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

对于公钥:

$ puttygen keyfile.pem -L

我最近从Linux的Putty转移到Linux的Remmina时遇到了这个问题。所以我在我的.putty目录中有很多PPK文件,因为我已经使用它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;

非常快速和要点,得到的工作完成了所有的文件,腻子。如果它发现一个带有密码的密钥,它将停止并首先询问该密钥的密码,然后继续。

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

enter image description here

sudo apt-get install putty

这将自动安装puttygen工具。

现在要将PPK文件转换为SSH命令使用,请在终端中执行以下命令

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

PPK→OpenSSH RSA with PuttyGen &码头工人。

私钥:

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -O private-openssh -o my-openssh-key

公共密钥:

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -L -o my-openssh-key.pub

另见https://hub.docker.com/r/zinuzoid/puttygen

甚至比重新打开puttygen更快,我经常做的是:

  1. 复制公钥文件。
  2. 在副本中,放置“ssh-rsa”字样;一开始。
  3. 删除开始/结束注释行和所有其他换行符。
  4. 保存。结果是一个适用于openssh的一行键。