如何使用 SSH 公钥和 PuTTY 连接到 Linux 机器

如何使用 SSH 公钥和 PuTTY 连接到 Linux 机器

我正在尝试设置从 Windows 7 计算机到 Red-Hat Linux 计算机的公共 SSH 密钥连接。最终目的是从命令终端使用pscp(PuTTY 版本scp),而无需重复输入密码。

根据 PuTTY 的文档和其他在线资料,我使用了PuTTYgen生成密钥对。然后我将生成的公钥复制到~/.ssh/authorized_keysLinux 机器上的一个文件中(据我所知,它运行 OpenSSH 服务器)。

为了检查连接,我运行 PuTTY 并在其 GUI 中的适当位置设置用户名和私钥文件。

但是,当尝试使用 PuTTY 的 SSH 进行连接时,连接使用预设的用户名,但我收到“ Server refused our key”的错误消息并提示输入密码。

然后我尝试从PuTTYgen的 GUI 添加到authorized_keys文件,但它也不起作用。

  1. 我应该如何建立从 Win 7 到 Linux 的公钥连接?

  2. 我如何使用它pscp(而不是 PuTTY 的 ssh)?


更新:认为问题可能出在PuTTYgen密钥格式,我ssh-keygen在 Linux 机器上使用它来创建 RSA 密钥对。它生成了一个id_rsa私钥和id_rsa.pub公钥。尝试使用> ssh-add id_rsa没有成功,因为我得到的答复是“ Could not open a connection to your authentication agent.”,所以我只使用了> cp id_rsa.pub authorized_keys

然后我将这些文件复制到 Windows 机器上,并使用PuTTYgen将私钥转换为PuTTY私钥格式(*.ppk)。尝试使用新密钥进行连接,我收到“ ”的响应Server refused our key

答案1

您必须正确遵循这些。

在 SSH 服务器中配置公钥

通过 SFTP 将公钥复制到 SSH 服务器

put publicy_key

登录SSH服务器验证复制的公钥

ls -l public_key

由于公钥没有任何权限,因此将其更改为400(表示读取)

chmod 400 public_key

使用ssh-keygen工具创建openSSH格式的公钥

ssh-keygen -if public_key > public_key_openssh_format

将创建的openSSH公钥添加到authorized_keys文件中

cat public_key_openssh_format >> ~/.ssh/authorized_keys

检查.ssh文件夹和authorized_keys文件的权限是否有访问权限

ls -al ~/.ssh

使用 PuTTY 验证密钥对

现在,可以使用 PuTTY 验证基于密钥的身份验证。输入主机名和端口

选择私钥(.ppk)

确认安全警报

如果配置正确,连接将成功建立

如果还是卡住了,那么你必须重新创建用户,然后按照步骤再次配置公钥。

可以使用以下命令重新创建用户:

复制用户文件夹并在重新创建之前将其删除。

yast2 users add username=userName cn=" User for test" password="password" gid=100 grouplist=dialout,video type=local

答案2

我得出结论,PuTTY 或 PuTTYgen 有问题。这不是一些与文件格式有关的简单用户错误。如果我计算服务器上授权公钥的哈希值,它会与我生成密钥的客户端上 PuTTYgen 显示的哈希值匹配。然而,服务器拒绝该密钥,就像它不匹配一样。

我已经在 OS X、Linux 和 Cisco & Juniper 路由器上尝试过。PuTTYgen 的 ssh-rsa 公钥不起作用。

如果您使用 OpenSSH 生成密钥,然后将其导入 PuTTYgen 以保存为 PuTTY 的 .ppk,则可以正常工作。

答案3

也许您需要将“连接/SSH/Auth/允许代理转发”选项设置为“true”。ssh-add完成此操作后,该命令对我有用。

显示 SSH 身份验证设置的 PuTTY 屏幕截图

相关内容