500

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

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

4

10 回答 10

755

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
    

有关更多信息,请参阅

于 2010-02-08T19:18:38.903 回答
179

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

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

参考

文章副本

我一直忘记这个,所以我要在这里写。非极客,继续走。

在 Windows 上制作密钥的最常见方法是使用 Putty/Puttygen。Puttygen 提供了一个简洁的实用程序来将 linux 私钥转换为 Putty 格式。但是,没有解决的是,当您使用 puttygen 保存公钥时,它将无法在 linux 服务器上运行。Windows 将一些数据放在不同的区域并添加换行符。

解决方案:当您进入在 pu​​ttygen 中创建密钥对的公钥屏幕时,复制公钥并将其粘贴到扩展名为 .pub 的文本文件中。阅读这样的帖子,您将节省系统管理员数小时的挫败感。

但是,系统管理员,您总是会得到一个不稳定的密钥文件,该文件不会在身份验证日志中引发任何错误消息,除非找不到密钥,尝试密码;即使其他人的密钥都可以正常工作,并且您已将此密钥发送回用户 15 次。

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

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

于 2012-04-04T16:44:55.220 回答
156

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

在此处输入图像描述

于 2015-03-30T10:45:34.083 回答
53

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

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

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

对于公钥:

$ puttygen keyfile.pem -L

于 2013-05-14T16:37:37.180 回答
30
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

于 2016-12-02T15:35:53.480 回答
14

我最近在从 Linux 的 Putty 迁移到 Linux 的 Remmina 时遇到了这个问题。所以我的.putty目录中有很多用于 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;

非常快速且切中要害,完成了 putty 拥有的所有文件的工作。如果它找到带有密码的密钥,它将停止并首先询问该密钥的密码,然后继续。

于 2013-07-02T14:04:06.583 回答
8

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

腻子常见问题解答:A.2.2

于 2010-02-08T19:10:53.660 回答
6

我认为 TCSgrad 试图问的(几年前)是如何让 Linux 像他的 Windows 机器一样运行。也就是说,有一个代理(选美)持有私钥的解密副本,因此密码只需要输入一次。然后,ssh 客户端 putty 可以在没有密码提示的情况下登录到其公钥被列为“已授权”的机器。

与此类似的是,充当 ssh 客户端的Linux有一个代理持有解密的私钥,因此当 TCSgrad 键入“ssh host”时,ssh 命令将获取他的私钥并在不提示输入密码的情况下运行。当然,主机必须将公钥保存在 ~/.ssh/authorized_keys 中。

该场景的 Linux 模拟是使用 ssh-agent(选美模拟)和 ssh-add(将私钥添加到选美的模拟)来完成的。

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

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

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

可以在此处找到包含更多详细信息的网络文章

于 2013-01-12T13:36:10.953 回答
0

PPK → OpenSSH RSA 与 PuttyGen 和 Docker。

私钥:

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

于 2020-05-18T10:52:09.637 回答
-2

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

  1. 复制公钥文件。
  2. 在副本中,将单词“ssh-rsa”放在开头。
  3. 删除开始/结束注释行和所有其他换行符。
  4. 节省。结果是一个适用于 openssh 的单行键。
于 2021-05-06T16:48:26.833 回答