如何在 RHEL 9 上配置 SSH 无密码身份验证
SSH是Secure Shell的缩写,是一种安全的网络协议,可加密两个端点之间的流量。它允许用户安全地连接网络和/或通过网络传输文件。
SSH主要由网络和系统管理员使用,用于通过网络安全地访问和管理远程资产(例如服务器和网络设备)。它使用强加密方法(例如AES)和哈希算法(例如SHA- 2 和ECDSA)来加密客户端和远程系统之间交换的流量。
[ 你可能还喜欢:如何保护和强化 OpenSSH 服务器]
SSH实现了两种身份验证方法:基于密码的身份验证和公钥身份验证。后者更受欢迎,因为它使用公钥身份验证提供更好的安全性,可以保护系统免受暴力攻击。
考虑到这一点,我们将演示如何在RHEL 9上配置基于SSH密钥的身份验证。
测试实验室设置
这就是我们的设置
- 我们将在其上生成密钥对的 Linux/UNIX(基于 Ubuntu 或 RHEL)系统。在本指南中,我使用的是Ubuntu发行版。
- RHEL 9 的一个实例(该云可以是本地或云 VPS)。
步骤 1:生成 ECDSA SSH 密钥对
访问您的 Linux 系统并按如下方式生成SSH密钥对。在本指南中,我们将使用提供更好加密和安全性的ECDSA算法生成密钥对。
因此,要生成ECDSA密钥对,请运行以下命令:
$ ssh-keygen -t ecdsa
该命令将引导您完成一系列提示。
默认情况下,密钥对保存在~/.ssh目录中的用户主目录中。您可以按键盘上的ENTER将其作为 SSH 密钥对的目标,否则,您可以指定您的首选路径。在本指南中,我们决定采用默认路径。
接下来,系统将提示您提供密码。这基本上是您在与远程RHEL 9系统建立连接时需要提供的密码。它在 SSH 密钥提供的加密之上提供了额外的保护层。
但是,如果您的计划是通过SSH保护自动化流程或配置无密码身份验证,建议将其留空。因此,我们将再次按 ENTER 键将其留空。
以下是命令运行时的输出。
您可以使用ls 命令查看 SSH 密钥对,如图所示。
$ ls -l ~/.ssh
id_ecdsa是私钥,而id_ecdsa.pub是公钥。私钥应始终保密,不应与任何人共享或泄露。另一方面,您可以自由地与您想要连接的任何远程系统共享公钥。
第 2 步:将公共 SSH 密钥复制到远程 RHEL 9
下一步是将公钥复制到远程RHEL 9实例。您可以手动执行此操作,也可以使用ssh-copy-id命令行工具。由于后者使用起来更容易、更方便,因此请使用以下语法调用它。
$ ssh-copy-id user@rhel-9-server-IP
在我们的例子中,命令如下,其中示例是常规登录用户,192.168.254.129是远程用户的 IP 地址。
$ ssh-copy-id example@192.168.254.129
输入 yes 继续连接。然后输入远程用户的密码并按 ENTER。
公钥将被复制到远程用户主目录的~/.ssh目录中的authorized_keys文件中。复制密钥后,您现在可以使用公钥身份验证登录远程RHEL 9实例。
注意:在RHEL 9中,默认情况下禁用或拒绝通过 SSH 进行 root 登录。这样做是有充分理由的 - 它可以防止攻击者使用 root 帐户登录,这将授予他系统上的所有权限。因此,以 root 身份将公钥复制到 RHEL 系统将失败。
在 RHEL 9 中启用 Root 登录
如果需要以root身份登录,则需要按如下方式编辑默认SSH配置。
$ sudo vim /etc/ssh/sshd_config
接下来,将PermitRootLogin属性设置为yes
并保存更改并退出文件。
要应用所做的更改,请重新启动 SSH 服务。
$ sudo systemctl restart ssh
步骤 3:验证 SSH 公钥认证
现在让我们确认公钥认证。为此,请按如下方式登录。
$ ssh example@192.168.254.129
这一次,系统不会提示您输入密码,您将直接进入远程RHEL 9 shell,如图所示。您可能还想验证前面提到的authorized_keys文件是否存在。
$ ls -l ~/.ssh
您还可以使用cat 命令查看加密公钥文件。
$ cat ~/.ssh/authorized_keys
在我们生成SSH密钥的 Linux 桌面上, ~/.ssh目录中会生成一个名为known_hosts的文件。该文件包含系统已连接的所有远程服务器的指纹。
在本指南中,我们已成功在RHEL 9上配置了基于 SSH 密钥的身份验证。非常欢迎您的反馈。