在 Linux 服务器上使用 PuTTY 配置_无密码 SSH 密钥身份验证_
SSH(安全外壳)是一种流行的协议,用于通过网络安全连接到远程服务器。当您使用 SSH 连接到服务器时,通常需要提供用户名和密码来验证您的身份。但是,如果您需要频繁连接到多个服务器,此过程可能会很乏味。幸运的是,有一个解决方案:无密码 SSH 密钥身份验证。
在本文中,我们将引导您完成使用 PuTTY(一种流行的 Windows SSH 客户端)在 Linux 服务器上设置无密码 SSH 密钥身份验证的过程。通过此设置,您可以快速安全地连接到服务器,而无需每次都输入密码。
先决条件
在我们开始之前,请确保您拥有以下内容 -
您想要使用 SSH 连接的 Linux 服务器。
PuTTY 安装在 Windows 计算机上。您可以从官方网站下载PuTTY。
Linux 命令的基本知识以及如何使用命令行。
为什么使用无密码 SSH 密钥身份验证?
使用无密码 SSH 密钥身份验证有几个好处 -
提高安全性 - SSH 密钥提供了一种比密码更安全的身份验证方式,因为它们更难以猜测或破解。
方便 - 使用 SSH 密钥,您无需在每次连接到服务器时记住或输入密码。
自动化 - SSH 密钥可用于自动执行远程服务器上的任务,例如运行脚本或执行命令。
使用 PuTTYgen 生成 SSH 密钥
要使用无密码 SSH 密钥身份验证,您需要生成公钥/私钥对。 PuTTYgen 是一个用于使用 PuTTY 生成和管理 SSH 密钥的工具。
按照以下步骤使用 PuTTYgen 生成 SSH 密钥 -
从官方网站下载并安装 PuTTY。
在“开始”菜单中搜索 PuTTYgen,将其打开。
单击“生成”按钮创建新的密钥对。在空白区域移动鼠标以生成密钥的随机数据。
为您的私钥设置密码。使用私钥需要此密码,因此请务必记住它。
单击“保存私钥”按钮保存您的私钥。选择一个安全的位置来保存文件。
将“用于粘贴到 OpenSSHauthorized_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 命令中使用 -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 服务器,而无需输入密码。如果您遇到任何问题,请务必仔细检查您的设置和权限。