在 Linux 系统中修改 SSH 服务的默认端口号是一项重要的安全措施,它可以帮助增强系统的安全性。这个过程相对简单,但必须由具有管理员权限的用户来执行。下面,我将向大家介绍如何安全地更改 SSH 端口的具体步骤。
1 备份 SSH 配置文件
在修改之前,建议先备份原始的 SSH 配置文件,以防出现问题可以恢复。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak2 编辑 SSH 配置文件
使用文本编辑器(如 `nano` 或 `vi`)打开 `/etc/ssh/sshd_config` 文件。
sudo vim /etc/ssh/sshd_config在文件中找到有关端口号的行,默认情况下,这行可能会被注释掉(以 `#` 开头),并显示为 `#Port 22`,如下图所示

3 更改端口号
将这行的 `#` 去掉,并将 `22` 更改为您想要设置的新端口号,例如,将端口号改为 `2222`,如下图所示

  确保选择的端口号没有被其他服务使用,并且是大于 1024 的非保留端口。
4 保存并关闭文件
保存更改并关闭编辑器。
     (1)如果使用的是 `nano`,可以按 `Ctrl + O`,然后按 `Enter` 保存,最后按 `Ctrl + X` 退出。
      (2)如果使用的是 `vim`,可以按 `ESC`,然后按 `:wq` 保存退出。
5 重启 SSH 服务
为了使更改生效,需要重启 SSH 服务,可以通过以下命令完成
sudo systemctl status sshd.service重启后如果发现报下面错误

6 检查防火墙状态
排查一下,看看防火墙是不是开着呢,一看还真开着呢

那就放行2222端口,执行下面命令
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
重载防火墙,使更改内容生效
sudo firewall-cmd --reload再次重启ssh服务,仍然重启失败,查看ssh日志发现以下问题
journalctl -xeu sshd.service
7 检查 SELinux 策略
这一步很重要,很容易被大家忽略!!!
如果你的系统使用 SELinux,检查 SELinux 策略是否允许 sshd 在端口 2222 上监听,你可以暂时关闭 SELinux 以测试是否是 SELinux 导致的问题
sudo setenforce 0然后尝试重启 sshd 服务,如果服务成功启动,则表示是SELinux策略导致的问题,这时你就得调整一下 SELinux 策略了(请记得在测试后重新启用 SELinux)。
sudo setenforce 1更改 SELinux 策略以允许 SSHD 在新端口上监听
你需要创建一个新的 SELinux 策略,允许 SSHD 在端口 2222 上监听。
        首先,安装 policycoreutils-python-utils(或 policycoreutils-python,取决于你的发行版)
sudo yum install policycoreutils-python-utils然后,添加一个新的策略规则
sudo semanage port -a -t ssh_port_t -p tcp 2222
这将允许 SSHD 服务在 TCP 端口 2222 上运行
重新启动 SSHD 服务并重新启用 SELinux
在修改 SELinux 策略后,重新启动 SSHD 服务
sudo systemctl restart sshd然后,重新启用 SELinux 强制模式
sudo setenforce 1检查 SELinux 状态和日志
getenforce
从输出来看,SELinux 当前处于 "Enforcing" 模式,这意味着 SELinux 的安全策略正在被强制执行,在这种模式下,任何违反策略的行为都将被拒绝,并且相应的违规行为会被记录下来。
注意:SELinux 是一个强大的安全工具,它可以防止许多类型的漏洞和攻击。因此,不建议永久禁用 SELinux。
检查端口 2222 是否已经正确地被分配给了 SSH
sudo semanage port -l | grep ssh_port_t
稳妥起见,再重启ssh测试一下,如下图所示没有问题了

8 测试新配置是否生效
在关闭当前 SSH 会话之前,打开一个新的终端窗口或 SSH 客户端,尝试使用新的端口号连接到服务器,以确保一切正常。
ssh -p 2222 username@your-server-ip 
        
请注意,在进行此类更改时,如果您失去了与服务器的连接,或者新的端口号因某种原因不起作用,可能会导致您无法通过 SSH 访问服务器,操作需谨慎。










