默认情况下, 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