在 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 服务器,而无需输入密码。如果您遇到任何问题,请务必仔细检查您的设置和权限。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP