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

StackOverflow https://stackoverflow.com/questions/2224066

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

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

有帮助吗?

解决方案

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

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

    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

参考

文章副本

我总是忘记这一点,所以我会把它写在这里。非怪异,只是继续走。

在 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密钥文件的私钥和公钥。对于大多数基于易于系统puttygenputty-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到键转换成腻子格式。

腻子FAQ:A.2.2

我想TCSgrad试图问(几年前)如何让Linux表现得像他的Windows机器一样。也就是说,有一个代理(选美)持有的私人密钥的解密副本,以便将密码只需要放一次。然后,SSH客户端,腻子,可以登录到他的公钥被列为“授权”无密码提示的机器。

这种情况的模拟是Linux中,的充当SSH客户端下,具有保持一个解密的专用密钥的代理,使得当TCSgrad类型“SSH主机” ssh命令将得到自己的私人密钥和去而不被提示输入密码。主机将当然,必须保持在〜/ .ssh / authorized_keys中的公共密钥。

在Linux的模拟到该场景使用ssh剂(选美模拟)从而完成(模增加一个私钥来选美)SSH-添加。

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

现在我们有选美运行的模拟,没有装入键的试剂。

打字 $的ssh-ADD 本身将增加(默认)在〜/ .ssh在默认身份文件中列出的私有密钥。

有很多更多的细节一个web物品可以发现此处

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top