使用 PuTTY 私钥从 Windows 到 Linux

使用 PuTTY 私钥从 Windows 到 Linux

我在PuTTY上生成了两个密钥:公钥和私钥。在Windows上使用此软件,我可以像往常一样连接到服务器。

然后我尝试将这些文件复制到我的 ubuntu 机器(21.04)中,并登录加载私钥(打开 putty,写入user@hostname然后在 SSH>Auth 中加载私钥),但无法连接被服务器拒绝,因为此错误说:

Unable to load key file '~/private_key.ppk' (PuTTY key format too new). 

然后会出现一个窗口,上面写着:

No supported authentication methods available (server sent: publickey)

因此,正如第一个错误所暗示的,通过 PuTTYgen 将私钥转换为 openssh PEM 格式,然后将该文件加载到 SSH/Auth 后,之前仍然显示“不支持”消息:

Unable to use key file '~/private_key_openssh' (OpenSSH SSH-2 private key (old PEM format) ).

有什么办法可以在 Ubuntu 上使用这些密钥吗?也许通过 openssh?

一些有用的信息:

  • 新安装的 Ubuntu 版本
  • 腻子0.74

尝试时的输出ssh -i ~/.ssh/private_key.ppk user@hostname

加载密钥“~/.ssh/private_key.ppk”:格式无效的用户@主机名:权限被拒绝(公钥)。

答案1

Adonis 和 Thomas 的回答/评论基本正确,但缺少一些我需要在实践中实现的细节。由于我的声誉不足以发表评论,我将通过此答案添加详细信息。

将 Putty PPK 导出为 OpenSSH 格式。

为此,请打开 PuttyGen,加载私钥,然后转到“转换”菜单并选择“导出 OpenSSH 密钥”

在 Ubuntu(或衍生版本)上使用 OpenSSH 密钥

如果您直接将其用于 SSH,则可以按照 Adonis 所述使用它。但是如果您间接需要它,例如用于源代码控制系统,该怎么办?

将其复制到 Linux 上的 ~/.ssh 文件夹中。如果您以前没有在 Linux 机器上使用过 SSH,则可能需要创建此文件夹。创建 .ssh 目录时,您需要这样做,chmod 0700 ~/.ssh以便 ssh 工具相信该目录确实是您的私有目录。

如果您从 Windows 复制了密钥文件,现在打开终端到 ~/.ssh 文件夹,然后运行chmod 400 [private key file name]​​。这是必要的,因为默认权限(从 Windows 复制时)将为 770;SSH 实用程序会告诉您这太宽松了,它会忽略密钥。不幸的是,它没有直接告诉您如何修复问题,但 400 权限(表示“我可读,其他人不可用”)将纠正问题。

现在,在终端上运行eval $(ssh-agent)。这将打开您的本地 SSH 代理,并允许您添加可被其他程序(例如源代码控制)获取的密钥。

最后,运行ssh-add ~/.ssh/[private file key name]。只要你记得设置权限,它就可以工作,并且你应该能够使用 git/hg/etc。使用你的 SSH 密钥。

答案2

连接成功!

authorized-keys根据 Thomas Ward 的建议,第一步是将 private_key 文件加载到 Windows 上的 PuTTYgen 中,并将公钥复制到该文件中。

此外,将 private_key 文件导出为 openssh 格式(第一个选项)为 private_OpenSSH 文件,然后将其移动到 ~/.ssh 目录以使用以下命令更改权限:

chmod 400 private_OpenSSH

让我最终联系到:

ssh -i ~/private_OpenSSH user@hostname

相关内容