SSH 是一种网络协议,用于与 Linux 系统进行远程安全通信。默认情况下,SSH 服务使用端口 22。

您可以通过修改服务器的 SSH 端口来添加额外的安全层,并降低黑客和机器人攻击的风险。

在本教程中,您将学习如何在 Linux 服务器修改 SSH 端口,本教程几乎涵盖所有发行版修改 SSH 服务端口的设置。

选择一个新端口

Linux 系统为常用的服务保留低于 1024 的端口。 您也可以使用 1-1024 范围内的端口作为 SSH 服务的端口。

但建议选择高于 1024 的端口以避免将来出现问题。 您可以为 SSH 服务最多选择 65535 个端口号。

我们将在本教程使用 4567 端口用于 SSH 服务,您可以根据自己的喜欢进行选择,建议选择一个易于记忆的。

设置防火墙

如果您的服务器启用了防火墙,那么您需要在修改之前,也就是使用新的 SSH 端口之前对防火墙进行调整。设置防火墙允许新的 SSH 端口的流量。

FirewallD 是 CentOS 系统默认的防火墙管理工具。您可以在 CentOS 服务器运行以下命令打开新端口:

sudo firewall-cmd --permanent --zone=public --add-port=4567/tcp 
sudo firewall-cmd --reload

在基于 CentOS 或 RHEL Linux 的发行版,另一个要求是调整 SELinux 规则允许新的 SSH 端口 4567。您可以运行以下命令来完成 SELinux 设置:

sudo semanage port -a -t ssh_port_t -p tcp 4567

在 Ubuntu 系统,默认的防火墙工具是 UFW。运行命令 sudo ufw allow 4567 允许新的 SSH 端口 4567 进行连接:

sudo ufw allow 4567

如果你已经在你的 Linux 服务器安装 iptables 并用作防火墙,你可以运行以下命令打开端口 4567:

sudo iptables -A INPUT -p tcp --dport 4567 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

配置 SSH

在 Linux 中,SSH 服务默认端口存储在 /etc/ssh/sshd_config 文件中。首先,您需要使用您喜欢的文本编辑器打开 SSH 配置文件进行编辑。

在本教程中我们将使用 vim 编辑器,运行命令 sudo vim /etc/ssh/sshd_config:

sudo vim /etc/ssh/sshd_config

现在在文件中搜索以port 22 开头的行。大多数情况下,此行用井号 # 注释掉。 删除 # 并输入您将使用的新 SSH 端口号,而不是标准的 SSH 端口 22。

修改后的最终结果它应该如下所示:

Port 4567

完成上述更改后,保存文件并重新启动 SSH 服务。

sudo systemctl restart ssh

在基于 CentOS 或 RHEL Linux 的发行版中,ssh 服务名称是 sshd,因此您需要运行命令 sudo systemctl restart sshd 来重启 sshd 服务:

sudo systemctl restart sshd

您可以运行命令 ss-an | grep 4567 来验证 SSH 服务是否正在监听新端口 4567:

ss-an | grep 4567

它将打印如下输出:

tcp        LISTEN   0    128       0.0.0.0:4567      0.0.0.0:*
tcp        LISTEN   0    128          [::]:4567         [::]:*

使用新端口连接 SSH 服务器

现在,您已成功修改 SSH 服务的端口。要使用新端口建立连接,您必须使用 SSH 命令的 -p 选项指定端口号。如下所示:

ssh -p 4567 username@remote_ip_address

结论

您已学习如何修改 Linux 系统的 SSH 端口。如果您有任何问题或建议,可以在下面发表评论。