首页 文章

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

提问于
浏览
410

我使用PuTTYgen生成密钥对并使用Pageant登录,因此我必须在系统启动时输入一次密码短语 .

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

8 回答

  • 6

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

    enter image description here

  • 17
    sudo apt-get install putty
    

    这将自动安装puttygen工具 .

    现在要转换要与SSH命令一起使用的PPK文件,请在终端中执行以下命令

    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

  • 12

    我认为TCSgrad试图问(几年前)是如何使Linux的行为与他的Windows机器一样 . 也就是说,存在代理(选美),其保存私钥的解密副本,使得密码只需要被放入一次 . 然后,ssh客户端putty可以登录到其公钥被列为“已授权”而没有密码提示的计算机 .

    这样做的模拟是Linux, acting as an ssh client ,有一个持有解密私钥的代理,这样当TCSgrad输入"ssh host"时,ssh命令将获得他的私钥,并且不会被提示输入密码 . 当然,主机必须在〜/ .ssh / authorized_keys中持有公钥 .

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

    对我有用的方法是使用:$ ssh-agent $ SHELL $ SHELL是我需要让代理运行并保持运行的神奇技巧 . 我发现在网上的某个地方,结束了几个小时的撞击我的头撞墙 .

    现在我们有了pageant的模拟运行,没有加载密钥的代理 .

    单独输入$ ssh-add将添加(默认情况下)〜/ .ssh中默认身份文件中列出的私钥 .

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

  • 631

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

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

    参考文献

    文章副本

    我一直忘了这个,所以我要在这里写 . 非极客,只是继续走路 . 在Windows上制作密钥的最常用方法是使用Putty / Puttygen . Puttygen提供了一个简洁的实用程序来将linux私钥转换为Putty格式 . 但是,未解决的问题是,当您使用puttygen保存公钥时,它将无法在Linux服务器上运行 . Windows将一些数据放在不同的区域并添加换行符 . 解决方案:当您在puttygen中创建密钥对时进入公钥屏幕,复制公钥并将其粘贴到扩展名为.pub的文本文件中 . 阅读这样的帖子,你会节省系统管理员数小时的挫败感 . 但是,系统管理员,你总是得到一个不会在auth日志中抛出错误信息的密钥文件,除了找不到密钥,尝试密码;即使其他人的钥匙工作正常,你已经将这个钥匙发回给用户15次 . ssh-keygen -i -f keyfile.pub> newkeyfile.pub
    应该将现有的puttygen公钥转换为OpenSSH格式 .

  • 8

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

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

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

    对于公钥:

    $ puttygen keyfile.pem -L

  • 141

    我最近遇到了这个问题,因为我正在从Putty for Linux迁移到Remmina for Linux . 所以我在我的 .putty 目录中为Putty提供了很多PPK文件,就像我've been using it'已经有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所有的文件完成了工作 . 如果找到带密码的密钥,它将停止并首先询问该密钥的密码,然后继续 .

  • 46

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

    PuTTY Faq: A.2.2

  • 131

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

    • 打开PuttyGen

    • 单击“加载”

    • 加载您的私钥

    • 转到 Conversions->Export OpenSSH 并导出您的私钥

    • 将您的私钥复制到 ~/.ssh/id_dsa (或 id_rsa ) .

    • 使用 ssh-keygen 创建公共密钥的RFC 4716版本

    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
    

    thisthis了解更多信息 .

相关问题