在管理服务器时,修改默认的SSH端口是一项常见且基础的安全加固措施,默认的22端口如同服务器大门上的一把标准锁,虽然方便,但也容易成为自动化攻击脚本的首要目标,将其更改为一个非标准端口,能有效减少噪音流量和暴力破解尝试,提升系统的初始安全防线。
进行此项修改前,请务必谨慎,一个错误的步骤可能导致您无法通过SSH远程连接服务器,最稳妥的做法是,在修改端口的同时,保持当前SSH会话的开启,并新开一个终端窗口使用新端口进行测试验证,在确认新端口连接无误后,再关闭原有会话,如果您的服务器处于物理隔离状态,或这是您唯一的连接途径,那么操作时需加倍小心。

准备工作与风险评估
您需要确保自己拥有服务器的root用户权限,整个修改过程涉及几个关键步骤:修改SSH服务配置文件、调整防火墙规则,以及处理SELinux的相关设置。
在按下回车键执行任何重启服务的命令前,反复检查配置文件的每一行书写是否正确,特别是端口号是否有拼写错误或格式问题,这是避免将自己锁在服务器门外的关键。
逐步配置流程
第一步,我们需要编辑SSH服务的核心配置文件,通过命令行工具,输入以下命令:
sudo vi /etc/ssh/sshd_config
您也可以选择使用nano或其他熟悉的文本编辑器,在打开的文件中,寻找指定SSH端口的那一行,它通常显示为:

#Port 22 此行默认是被注释掉的(以开头),表示SSH服务正在使用默认的22端口,我们的任务是激活一个新端口,建议的操作方式是,保留原始的#Port 22作为备份和参考,在其下方新增一行,写入您选择的新端口号,我们想将端口更改为5822:
#Port 22
Port 5822 在选择端口号时,应避免使用已知的常见服务端口,最好选择一个在1024到65535之间,且不易被猜测到的数字。
完成编辑后,保存并关闭文件,我们需要让SSH服务重新加载此配置文件,以使更改生效,执行命令:
sudo systemctl reload sshd
reload命令的优势在于,它能使服务平滑地重新加载配置,而不会中断现有的连接,这为您提供了一个安全的测试窗口。
配置系统防火墙
SSH服务已经开始监听新的端口,但系统的防火墙很可能仍然只允许22端口的连接,我们需要更新防火墙规则,以常用的firewalld为例,首先移除旧的SSH服务规则(它默认放行22端口),然后添加新的端口。

sudo firewall-cmd --remove-service=ssh --permanent sudo firewall-cmd --add-port=5822/tcp --permanent
--permanent参数表示这是永久性规则,否则重启后规则会丢失,在添加了永久规则后,需要重新加载防火墙来应用更改:
sudo firewall-cmd --reload
如果您使用的是iptables或其他防火墙工具,请相应调整命令,确保新端口被明确允许接入。
应对SELinux策略
在启用了SELinux的系统中,这是一个关键的步骤,如果忽略,将导致无法通过新端口连接,SELinux默认只允许SSH在22端口上运行,我们需要告诉它,新的端口也是合法的。
使用以下命令查询当前SSH被允许的端口:
sudo semanage port -l | grep ssh
您会看到类似ssh_port_t tcp 22的输出,将我们新设定的端口(5822)添加到SELinux策略中:
sudo semanage port -a -t ssh_port_t -p tcp 5822
此命令中,-a表示添加,-t指定类型,-p指定协议,执行完毕后,可以再次使用查询命令确认新端口已出现在允许列表中。
全面验证与最终切换
所有配置完成后,最为重要的验证环节开始了,请不要关闭您当前的SSH会话窗口,新开一个终端窗口,尝试使用新端口连接服务器:
ssh username@your_server_ip -p 5822
请将username替换为您的实际用户名,your_server_ip替换为服务器IP地址,5822替换为您设置的新端口。
如果能够成功连接并登录,恭喜您,说明所有配置均已正确生效,您可以在新的会话中,再次确认SSH服务正在监听您设置的端口:
sudo netstat -tulpn | grep sshd
命令输出应显示sshd进程正在监听您新配置的端口号。
在确保新端口连接完全正常、稳定后,您才可以安全地断开最初的那个旧端口会话,作为最后一步的安全加固,您可以返回SSH配置文件,将最初作为备份注释的#Port 22一行彻底删除,只保留Port 5822,然后再次执行sudo systemctl reload sshd,这样做可以消除任何使用旧端口连接的可能性。
关于安全实践的延伸思考
修改默认SSH端口是服务器安全体系中一个有效的、基础层面的补充,它通过“安全通过 obscurity”的方式,筛掉了大量漫无目的的自动化扫描和攻击,我们必须清晰地认识到,它并非万无一失的安全银弹,一个真正坚固的服务器安全态势,应构建在多层次的防御之上。
这包括但不限于:完全禁用密码登录,转而使用密钥对进行认证;配置失败登录尝试锁定策略,如Fail2Ban;定期更新系统和软件包以修补安全漏洞;以及实施最小权限原则,严格控制用户访问范围。
端口修改是这个综合安全策略中的一个环节,它提高了攻击者的入门门槛,但绝不能替代其他更深层次的安全措施,每一位系统管理员都应将这种纵深防御的思想贯穿于日常运维工作中,根据实际业务需求和风险状况,持续评估和优化安全配置,才能为数据和服务提供更为可靠的保障。
