CentOS系统默认使用22端口作为SSH服务的监听端口,出于安全考虑,更换SSH端口可以有效降低自动化攻击的风险,本文将详细介绍如何在CentOS系统中安全更换SSH端口的完整步骤,包括配置修改、防火墙设置及服务重启等关键环节,确保操作过程规范且系统稳定运行。

备份原始SSH配置文件
在进行任何配置修改前,首先建议备份原始的SSH配置文件,以便在出现问题时能够快速恢复,默认情况下,SSH主配置文件位于/etc/ssh/sshd_config,使用以下命令创建备份文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
备份完成后,可以通过cat或vim命令查看当前配置,确认默认端口设置及其他参数,确保后续修改不会影响现有功能。
修改SSH端口号
打开SSH配置文件/etc/ssh/sshd_config,找到以下行:
#Port 22
取消注释并将22替换为自定义端口号,建议选择1024至65535之间的数字端口,避免使用常用端口(如80、443等)以减少冲突风险。
Port 2222
修改后保存文件,若需配置多端口监听(兼容旧连接),可添加新行并指定其他端口,但需确保所有端口均未被其他服务占用。
配置防火墙规则
CentOS系统默认使用firewalld或iptables作为防火墙管理工具,若为firewalld,需执行以下命令开放新端口:

sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
若使用iptables,则需编辑规则文件(如/etc/sysconfig/iptables),添加:
-A INPUT -p tcp --dport 2222 -j ACCEPT
保存后重启防火墙服务,操作完成后,可通过netstat -tuln | grep 2222验证端口是否成功监听。
禁用默认端口(可选)
为增强安全性,可选择完全禁用默认22端口,在sshd_config中注释或删除原Port 22行,仅保留新端口配置,随后重启SSH服务使配置生效:
sudo systemctl restart sshd
重启前建议通过systemctl status sshd检查服务状态,确保无错误提示。
测试新端口连接
在修改配置前,建议先开启新终端窗口,避免因配置错误导致无法远程访问,使用以下命令测试新端口连接:
ssh -p 2222 username@your_server_ip
若登录成功,说明配置正确;若失败,需检查防火墙规则、SELinux状态(可通过setenforce 0临时关闭测试)及SSH日志(/var/log/secure)排查问题。

其他安全优化建议
更换端口后,可结合其他安全措施进一步提升系统防护能力:
- 禁用root登录:在
sshd_config中设置PermitRootLogin no,强制使用普通用户登录后切换至root。 - 密钥认证:启用
PubkeyAuthentication yes并禁用密码登录,减少暴力破解风险。 - 失败封禁:通过
fail2ban工具自动封禁多次失败IP,防止持续攻击。
相关问答FAQs
Q1: 更换SSH端口后无法连接,如何排查?
A1: 首先检查防火墙是否开放新端口(firewall-cmd --list-ports),确认SSH服务状态(systemctl status sshd),并查看/var/log/secure日志定位错误原因,同时检查SELinux是否拦截(grep sshd /var/log/audit/audit.log),临时关闭SELinux测试(setenforce 0)。
Q2: 如何在更换端口后保持原22端口的兼容性?
A2: 在sshd_config中同时保留Port 22和Port 2222两行配置,重启SSH服务即可,但需注意,长期开放多端口可能增加管理复杂度,建议在过渡期后关闭默认端口。