默认情况下, SSH 侦听端口 22 。 更改默认 SSH 端口可以降低风险,从而为服务器增加额外的安全层。

和更改默认端口相比,将防火墙配置为仅允许从特定主机访问端口 22 则更加简单和安全。

本教程介绍如何更改 Linux 中的默认 SSH 端口。我们还将向您展示如何配置防火墙以允许访问新的 SSH 端口。

更改 SSH 端口

请按照以下步骤更改 Linux 系统上的 SSH 端口:

选择新的端口号

在 Linux 中,低于 1024 的端口号保留用于众所周知的服务,并且只能由 root 绑定。虽然您可以使用 1-1024 范围内的端口进行 SSH 服务,但为了避免将来出现端口分配问题,建议选择 1024 以上的端口。

在此示例中,将 SSH 端口更改为 5522 ,当然您可以选择任何您喜欢的端口。

调整防火墙

在更改 SSH 端口之前,首先需要调整防火墙以允许新 SSH 端口上的流量。

如果您使用的是 Ubuntu 的默认防火墙配置工具 UFW , 请运行以下命令来打开新的 SSH 端口:

sudo ufw allow 5522/tcp

在 CentOS 中,默认的防火墙管理工具是 FirewallD 。要打开新端口,请运行以下命令:

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

CentOS 用户还需要调整 SELinux 规则以允许新的SSH端口:

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

如果您使用 iptables 作为防火墙,则以下命令将打开新的 SSH 端口:

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

编辑 SSH 配置

使用文本编辑器打开 SSH 配置文件 /etc/ssh/sshd_config :

sudo nano /etc/ssh/sshd_config

搜索以 Port 22 开头的行。在大多数情况下,此行将以 # 开头。删除 # 并输入将用于代替标准 SSH 端口 22 的新 SSH 端口号。

Port 5522

修改 SSH 配置文件时要格外小心。不正确的配置可能导致 SSH 服务无法启动。

完成后保存文件并重新启动 SSH 服务以应用更改:

sudo systemctl restart ssh

在 CentOS 中, ssh 服务命名为 sshd :

sudo systemctl restart sshd

要验证 SSH 守护程序是否正在侦听新端口 5522 ,请键入:

ss -an | grep 5522

输出应该如下所示:

tcp   LISTEN      0        128            0.0.0.0:5522           0.0.0.0:*
tcp   ESTAB       0        0      192.168.121.108:5522     192.168.121.1:57638
tcp   LISTEN      0        128               [::]:5522              [::]:*

使用新的 SSH 端口

现在您已经更改了要登录远程的计算机 SSH 端口,您需要在登录时指定新端口。

使用 -p <port_number> 选项指定端口:

ssh -p 5522 username@remote_host_or_ip