如何从 Windows 上的 Putty 与 Linux 上的 OpenSSH 进行通信?

如何从 Windows 上的 Putty 与 Linux 上的 OpenSSH 进行通信?

让 Putty 与 OpenSSH 通信的过程困扰了我很长一段时间。

我安装了 OpenSSH:

sudo apt-get install openssh

然后我使用以下命令生成 ssh 密钥:

ssh-keygen -t rsa -b 4096 -C "my user here"

上面的命令将公钥和私钥组合移动到我的用户的配置文件主.ssh目录(/home/myUser/.ssh)(我想我可能必须.ssh在那里创建文件夹才能ssh-keygen正常工作)

然后我将私钥复制到Windows并尝试在Putty中使用它。服务员一直拒绝我。

答案1

我安装了 OpenSSH:

sudo apt-get install openssh

服务器sshopenssh-server包装中。因此,要么您没有安装服务器并且没有连接到您的服务器,要么它之前已经安装过。

上面的命令将公钥和私钥组合移动到我的用户的配置文件主 .ssh 目录(/home/myUser/.ssh)(我想我可能必须在那里创建 .ssh 文件夹才能使 ssh-keygen 正常工作)

它在服务器上生成了您的密钥。但要让密钥“授权”,您需要将其复制id_rsa.pub到 ~/.ssh/authorized_keys`。

然后我将私钥复制到Windows并尝试在Putty中使用它。服务员一直拒绝我。

PuTTY 不理解 OpenSSH 格式的私钥。您需要使用 PuTTYgen 将其转换为 PuTTY 格式。

此外,移动私钥也被认为是不好的做法。无论如何,当您使用 PuTTYgen 时,您可以在客户端计算机上生成密钥并将公钥复制到服务器(显然您仍然需要将其转换为 openssh 格式:https://stackoverflow.com/a/10015651/15359441)。

答案2

这些是我用来解决问题的步骤(我正在回答我自己的问题,因为这花了我两天的时间才弄清楚)。

  1. 转到 Windows 防火墙并添加端口 22 入站/出站的允许规则。

  2. 确保将端口 22 入站/出站允许规则添加到 Linux IPTABLES。

  3. 在 Linux 上的 /home/myUser/.ssh 文件夹中,将公钥文件(具有 .pub 文件扩展名的文件)内容复制到名为 authorized_keys 的文件中(您必须创建它,就像您必须创建目录“/home/myUser/.ssh”一样(其中“myUser”是您的用户名)

  4. 将私钥复制到 Windows 盒子(客户端,安装了 putty)。

  5. 转至 Windows 上的 putty 安装目录(通常为 c:\Program Files\Putty)并运行 puttygen.exe。转到“转换”选项卡并导入您从 Linux 复制的公钥。保存它(它将保存为 .ppk 文件,这是 Putty 的密钥格式)。

  6. 连接后,在 putty 左侧,转到“SSH”,然后转到“Auth” - 在“Auth”下,加载您刚刚保存的 .ppk 格式私钥。然后连接。如果系统要求您提供用户/密码,只需在两者上按 Enter 键即可。您应该已连接/看到欢迎消息。

相关内容