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 yes
到 PermitRootLogin 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 规则,请运行 firewall-cmd
下面的命令。 然后重新加载防火墙规则。
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
现在,您已经完成了 firewalld 的安装和配置,以保护您的 SSH 服务器。
结论
在本指南中,您已经完成了 CentOS/RHEL 系统上 SSH 的安装和配置。 您已通过更改默认端口和禁用登录来保护您的 SSH 服务器 root
用户。 此外,您已经在 CentOS/RHEL 系统上完成了 firewalld 的安装和配置,以保护 SSH 服务器。
如果您有任何问题,请告诉我们。