如何在 CentOS 和 RHEL 上设置 SSH

SSH (Secure Shell) 是一种基于客户端-服务器架构的安全网络协议,允许您通过网络安全地访问远程计算机/服务器。

系统管理员广泛使用 SSH 连接到远程服务器。 这使管理员可以随时随地轻松安全地远程管理服务器和应用程序。

在本指南中,我将向您展示如何在 CentOS/RHEL 系统上设置和启用 SSH。 在此 CentOS 系统上启用 SSH 后,您应该能够使用其 IP 地址从其他计算机访问此系统。

本教程还包括更改默认 SSH 端口、禁用 root 用户的 SSH 登录以及设置 firewalld 以保护您的 SSH 服务器的步骤。

要完成本指南,请确保您满足以下要求:

  • 一个 CentOS/RHEL Linux 系统。 你可以将它安装在你的物理机/真实硬件上,或者通过KVM/使用虚拟机VirtualBox,或使用第三方云提供商,如 锂节点 (但他们通常已经启用了 SSH)。
  • 非root用户 sudo/root 权限。 该用户将用于修改您的系统。 最后,该用户可用于登录您的服务器。

安装 OpenSSH 软件包

开放SSH 是 SSH 协议最流行的软件实现之一。 它被数以百万计的 Linux 服务器使用,并成为服务器环境的关键部分。 默认情况下,大多数 Linux 发行版存储库都可以使用 OpenSSH,包括 CentOS 和 RHEL 系统。

在开始之前,请使用 DNF 包管理器刷新包索引,如下所示。

sudo dnf check-update

接下来,使用以下命令在 CentOS/RHEL 系统上安装 OpenSSH 软件包。 此命令将安装 OpenSSH 服务器包以及 OpenSSH 客户端软件。

sudo dnf install openssh-server openssh-clients -y

OpenSSH安装完成后,执行以下命令启动 sshd 服务并使其在系统启动时自动启动。

sudo systemctl enable --now sshd

现在,验证 sshd 通过运行以下命令来查看服务状态。

sudo systemctl status sshd

您将收到类似于以下屏幕截图的输出。 这 sshd 服务是 active (running).

配置 SSH 服务器

默认情况下,SSH 配置在 /etc/ssh 目录,主配置文件是 sshd_config. 该文件包含一些基本的 SSH 配置,例如 ListenAddress 确定运行 SSH 服务的 IP 地址, Port 用于设置 SSH 服务端口、身份验证方法等。

在本节中,您将修改配置 sshd_config,然后更改默认 SSH 端口并禁用 root 用户的登录。

出于安全原因,建议使用此设置,以提高服务器安全性并减少对服务器的暴力攻击。

现在,打开文件 sshd_config 使用 vi 编辑器或您喜欢的编辑器。

sudo vi /etc/ssh/sshd_config

在开始编辑文件之前,您必须知道以 # 空行被解释为注释。

在该行的顶部,将默认 SSH 端口从 22 到您的首选港口。 本教程使用非标准端口 2028 对于 SSH。

Port 2028

⚠️请确保您有一个非root用户 sudo 此系统上已启用访问权限。 否则,如果您禁用 root 登录,您可能无法远程登录到您的服务器。

接下来,更改选项 PermitRootLogin yesPermitRootLogin no. 这将禁用用户的 SSH 登录 root 用户。 或者,您可以添加 # 在行首 PermitRootLogin.

PermitRootLogin no

Save 和 close 文件。

进行更改后,验证 SSH 配置,然后重新启动 sshd 服务。

sshd -t
sudo systemctl restart sshd

现在,您可以通过运行 ssh 下面的命令。

ssh [email protected] -p PORT

-p 选项用于指定 SSH 服务器的端口。

在本节中,您已经完成了通过更改默认 SSH 端口和禁用登录来保护 SSH 服务器的基本配置。 root 用户。 此外,您还学会了使用非标准端口连接到 SSH 服务器。 接下来,您将安装和配置 firewalld。

安装和配置防火墙

如果您在公共 Internet 上使用 CentOS/RHEL 服务器,例如云服务器,那么您可能需要启用防火墙。 这将通过限制对特定服务(如 SSH、HTTP 和 HTTPS)的访问来提高您的服务器安全性。 在基于 CentOS/RHEL 的发行版上, 防火墙 是您可以在系统上安装的默认防火墙包。

在本节中,您将安装 firewalld 并为您的 SSH 服务器设置其开放端口。

要安装firewalld,请运行 dnf 下面的命令。

sudo dnf install firewalld -y

firewalld安装完成后,启动并启用 firewalld 服务。 然后通过运行以下命令验证其状态。

sudo systemctl enable --now firewalld
sudo systemctl status firewalld

您将收到类似以下屏幕截图的输出。 这 firewalld 服务是 active (running).

要与 firewalld 交互,可以使用命令 firewall-cmd. 它是用于管理防火墙规则的命令行界面。 您可以使用 firewall-cmd 添加、删除和修改 firewalld 规则。 您还可以使用 firewall-cmd.

现在,要将自定义 SSH 端口添加到您的系统,请运行 firewall-cmd 下面的命令。

sudo firewall-cmd --add-port=2028/tcp --permanent

您将收到输出 success,表示操作成功并完成。

这 example 使用端口 2028 作为自定义 SSH 端口。 并且SSH服务运行在TCP端口上,所以需要指定端口和协议如 2028/tcp. 选项 --permanent 永久制定此规则。

接下来,使用以下命令重新加载 firewalld 规则以应用新配置。

sudo firewall-cmd --reload

您已将 SSH 自定义端口添加到 firewalld。 执行以下命令列出所有启用的规则。

sudo firewall-cmd --list-all

现在您将在 firewalld 中看到已启用规则的列表。 默认情况下启用 SSH、Cockpit 和 dhcp 服务。

验证 SSH 的防火墙规则

要删除默认 SSH 规则,请运行 firewall-cmd 下面的命令。 然后重新加载防火墙规则。

sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

现在,您已经完成了 firewalld 的安装和配置,以保护您的 SSH 服务器。

结论

在本指南中,您已经完成了 CentOS/RHEL 系统上 SSH 的安装和配置。 您已通过更改默认端口和禁用登录来保护您的 SSH 服务器 root 用户。 此外,您已经在 CentOS/RHEL 系统上完成了 firewalld 的安装和配置,以保护 SSH 服务器。

如果您有任何问题,请告诉我们。