在 Linux 服务器上使用 PuTTY 配置_无密码 SSH 密钥身份验证_

linuxoperating systemopen source更新于 2026/1/29 4:37:17

SSH(安全外壳)是一种流行的协议,用于通过网络安全地连接到远程服务器。使用 SSH 连接服务器时,通常需要提供用户名和密码来验证您的身份。但是,如果您需要频繁连接多台服务器,此过程可能会非常繁琐。幸运的是,有一个解决方案:无密码 SSH 密钥身份验证。

在本文中,我们将引导您使用 PuTTY(一款流行的 Windows SSH 客户端)在 Linux 服务器上设置无密码 SSH 密钥身份验证。通过此设置,您可以快速安全地连接到服务器,而无需每次都输入密码。

先决条件

开始之前,请确保您已具备以下条件 -

  • 要使用 SSH 连接的 Linux 服务器。

  • 已在 Windows 计算机上安装 PuTTY。您可以从官方网站下载 PuTTY。

  • Linux 命令的基础知识以及如何使用命令行。

为什么使用无密码 SSH 密钥身份验证?

使用无密码 SSH 密钥身份验证有几个好处 -

  • 更高的安全性 - SSH 密钥提供了一种比密码更安全的身份验证方式,因为密码更难猜测或破解。

  • 方便 - 使用 SSH 密钥,您无需在每次连接到服务器时记住或输入密码。

  • 自动化 - SSH 密钥可用于自动执行远程服务器上的任务,例如运行脚本或执行命令。

使用PuTTYgen

要使用无密码 SSH 密钥身份验证,您需要生成公钥/私钥对。PuTTYgen 是一款用于在 PuTTY 中生成和管理 SSH 密钥的工具。

按照以下步骤使用 PuTTYgen 生成 SSH 密钥 -

  • 从官方网站下载并安装 PuTTY。

  • 在"开始"菜单中搜索 PuTTYgen 并打开它。

  • 点击"生成"按钮创建新的密钥对。将鼠标移动到空白区域周围,即可为密钥生成随机数据。

  • 为您的私钥设置密码。使用私钥时需要此密码,请务必记住。

  • 点击"保存私钥"按钮保存您的私钥。选择一个安全的位置来保存文件。

  • 将"用于粘贴到 OpenSSH 授权密钥文件中的公钥"字段的内容复制到剪贴板。这就是您的公钥。

将公钥添加到 Linux 服务器上的授权密钥文件中

现在您已经生成了 SSH 密钥对,您需要将公钥添加到要连接的 Linux 服务器上的授权密钥文件中。请按照以下步骤操作 -

  • 使用您的密码登录 Linux 服务器。

  • 如果 .ssh 目录尚不存在,请在主目录中创建一个。运行以下命令 - mkdir -p ~/.ssh。

  • 在文本编辑器中打开授权密钥文件。运行以下命令:nano ~/.ssh/authorized_keys。

  • 将您之前复制的公钥内容粘贴到authorized_keys文件中。

  • 按Ctrl-X,然后按Y,再按Enter保存并关闭文件。

  • 运行以下命令设置.ssh目录和authorized_keys文件的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

设置 Linux 服务器上 .ssh 目录和 authorized_keys 文件的权限

为了使 SSH 正常工作,Linux 服务器上的 .ssh 目录和 authorized_keys 文件需要具有正确的权限。请按照以下步骤正确设置权限 -

  • 使用您的密码登录 Linux 服务器。

  • 运行以下命令导航到您的主目录:cd ~。

  • 运行以下命令设置 .ssh 目录的权限:chmod 700 ~/.ssh。

  • 运行以下命令设置 authorized_keys 文件的权限:chmod 600 ~/.ssh/authorized_keys。

使用 PuTTY 进行 SSH 代理转发

SSH 代理转发是一项实用功能,可让您在远程服务器上使用 SSH 密钥。如果您需要使用同一密钥连接到多个服务器,或者需要执行多个 SSH 跳转才能到达远程服务器,这将非常有用。

要启用 SSH 代理转发,您需要执行以下步骤 -

  • 检查本地计算机上是否启用了 SSH 代理转发 -

    在本地计算机上运行以下命令以检查 SSH 代理转发是否已启用 -

$ echo "$SSH_AUTH_SOCK"

    如果输出是套接字文件的路径(例如 /tmp/ssh-XXXXXXXX/agent.XXXXXX),则表示 SSH 代理转发已启用。

  • 在远程服务器上启用 SSH 代理转发−

    您需要在远程服务器上的 SSH 配置文件 (/etc/ssh/sshd_config) 中添加以下行 −

AllowAgentForwarding yes

    完成此更改后,您需要在远程服务器上重新启动 SSH 服务 −

$ sudo systemctl restart sshd
  • 启用 SSH 代理转发功能后连接到远程服务器 −

    要启用 SSH 代理转发功能后连接到远程服务器,请在 ssh 命令中使用 -A 选项 −

$ ssh -A remote_server

    连接到远程服务器后,您可以使用 SSH 密钥连接到其他可以识别该密钥的服务器。

    例如,假设您需要连接到第二个可以识别您的 SSH 密钥的远程服务器 (second_remote_server)。您可以使用以下命令从远程服务器 (remote_server) 连接到该服务器 -

配置 PuTTY 使用私钥

最后一步是配置 PuTTY 在连接到 Linux 服务器时使用您的私钥。操作方法如下 -

  • 打开 PuTTY,然后转到"会话"类别。

  • 在"主机名(或 IP 地址)"字段中输入 Linux 服务器的主机名或 IP 地址。

  • 在"连接"类别下,展开"SSH"子类别,然后点击"身份验证"。

  • 点击"用于身份验证的私钥文件"字段旁边的"浏览"按钮,然后选择您在步骤 1 中保存的私钥文件。

  • 点击"打开"按钮启动 SSH 会话。

现在您应该能够连接到 Linux 服务器,而无需输入密码。 PuTTY 将自动使用私钥进行身份验证。

故障排除

如果您无法使用私钥连接到 Linux 服务器,请尝试以下故障排除步骤 -

  • 确保公钥已正确添加到 Linux 服务器上的 authorized_keys 文件中。

  • 确保 Linux 服务器上 .ssh 目录和 authorized_keys 文件的权限设置正确。

  • 确保私钥文件以正确的格式保存(PuTTY 默认使用 .ppk 格式)。

  • 确保在 PuTTY 中正确选择了私钥文件。

结论

无密码 SSH 密钥身份验证是一种快速安全地连接到 Linux 服务器的便捷方式。按照本文概述的步骤操作,您现在应该能够使用 PuTTY 连接到您的 Linux 服务器,而无需输入密码。如果您遇到任何问题,请务必仔细检查您的设置和权限。


相关文章


有用资源