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


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

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

先决条件

在开始之前,请确保您拥有以下内容:

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

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

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

为什么要使用无密码 SSH 密钥认证?

使用无密码 SSH 密钥认证有几个好处:

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

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

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

使用 PuTTYgen 生成 SSH 密钥

要使用无密码 SSH 密钥认证,您需要生成一对公钥/私钥。PuTTYgen 是一个用于使用 PuTTY 生成和管理 SSH 密钥的工具。

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

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

  • 通过在“开始”菜单中搜索来打开 PuTTYgen。

  • 单击“生成”按钮以创建新的密钥对。将鼠标移动到空白区域以生成密钥的随机数据。

  • 为您的私钥设置密码短语。此密码短语将需要用于私钥,因此请务必记住它。

  • 单击“保存私钥”按钮以保存您的私钥。选择一个安全的位置保存文件。

  • 将“用于粘贴到 OpenSSH authorized_keys 文件中的公钥”字段的内容复制到剪贴板。这是您的公钥。

将公钥添加到 Linux 服务器上的 authorized_keys 文件

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

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

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

  • 在文本编辑器中打开 authorized_keys 文件。运行以下命令: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 代理转发的 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 服务器,而无需输入密码。如果您遇到任何问题,请务必仔细检查您的设置和权限。

更新于: 2023 年 6 月 26 日

342 次查看

开启您的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.