如何将使用 PuTTYgen (Windows) 生成的 SSH 密钥对转换为 ssh-agent 和 Keychain (Linux) 使用的密钥对
题
我已使用 PuTTYgen 生成密钥对并使用 Pageant 登录,因此系统启动时只需输入一次密码。
我如何在 Linux 中实现这一目标?我听说过 keychain
但我听说它使用不同的密钥对格式 - 我不想更改我的 Windows 密钥,如果我能够在 Windows 和 Linux 中以相同的方式无缝连接,那就太好了。
解决方案
puttygen
支持将您的私钥导出为 OpenSSH 兼容格式。然后,您可以使用 OpenSSH 工具重新创建公钥。
- 打开 PuttyGen
- 单击加载
- 加载您的私钥
- 去
Conversions->Export OpenSSH
并导出您的私钥 - 将您的私钥复制到
~/.ssh/id_dsa
(或者id_rsa
). 使用以下命令创建 RFC 4716 版本的公钥
ssh-keygen
ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
将 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 - 镜子: https://web.archive.org/web/20120414040727/http://www.treslervania.com/node/408.
文章副本
我总是忘记这一点,所以我会把它写在这里。非怪异,只是继续走。
在 Windows 上创建密钥的最常见方法是使用 Putty/Puttygen。Puttygen提供了一个整洁的实用程序,可以将Linux私钥转换为油灰格式。但是,没有解决的问题是,当您使用puttygen保存公共密钥时,它将无法在Linux服务器上使用。Windows将一些数据放在不同的区域,并增加了线路断路。
解决方案:当您在Puttygen中创建键对时,进入公共密钥屏幕时,请复制公共密钥并将其粘贴到带有Extension .pub的文本文件中。您将为您节省Sysadmin小时的挫败感阅读文章。
但是,sysadmins,您总是会收到auth log中没有错误消息的怪异密钥文件,除非,没有找到密钥,尝试密码;即使其他所有人的密钥都可以正常工作,并且您已将此键发送给用户15次。
ssh-keygen -i -f keyfile.pub > newkeyfile.pub
应该将现有的 puttygen 公钥转换为 OpenSSH 格式。
较新版本的的puttygen (我的是0.64)能够显示OpenSSH的公共密钥在.ssh/authorized_keys
文件linux系统要粘贴,如图所示,如下图中:
另外,如果你想抓住从您可以使用* nix系统puttygen
一个格式化的PuTTY密钥文件的私钥和公钥。对于大多数基于易于系统puttygen
是putty-tools
包的一部分。
输出从一个腻子格式化密钥文件的私有密钥:
$ puttygen keyfile.pem -O private-openssh -o avdev.pvk
有关的公共密钥:
$ puttygen keyfile.pem -L
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
我,因为我是从移动腻子用于Linux到Remmina为Linux最近有这个问题。所以,我在我的.putty
目录中的很多PPK文件腻子,因为我一直在使用它的8年。为此,我使用一个简单的for
命令bash外壳做的所有文件:
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;
非常快,给点意见,得到了该腻子过的所有文件所做的工作。如果发现使用密码钥匙将停止,并要求该区域的密码键,然后再继续。
它可能更容易在linux下创建你的钥匙和使用的puttygen到键转换成腻子格式。
我想TCSgrad试图问(几年前)如何让Linux表现得像他的Windows机器一样。也就是说,有一个代理(选美)持有的私人密钥的解密副本,以便将密码只需要放一次。然后,SSH客户端,腻子,可以登录到他的公钥被列为“授权”无密码提示的机器。
这种情况的模拟是Linux中,的充当SSH客户端下,具有保持一个解密的专用密钥的代理,使得当TCSgrad类型“SSH主机” ssh命令将得到自己的私人密钥和去而不被提示输入密码。主机将当然,必须保持在〜/ .ssh / authorized_keys中的公共密钥。
在Linux的模拟到该场景使用ssh剂(选美模拟)从而完成(模增加一个私钥来选美)SSH-添加。
这为我工作的方法是使用: $的ssh-agent $ SHELL 这$ SHELL是魔术我需要让代理运行和保持运行。我发现了“网的某处,它结束了打我的头撞在墙上的几个小时。
现在我们有选美运行的模拟,没有装入键的试剂。
打字 $的ssh-ADD 本身将增加(默认)在〜/ .ssh在默认身份文件中列出的私有密钥。
有很多更多的细节一个web物品可以发现此处