修改SSH默认端口为2222等非标准端口可有效降低自动化攻击风险;需备份配置、检查端口占用、修改sshd_config、同步更新防火墙及云安全组规则,并处理SELinux策略,最后重启服务验证连接。

修改 SSH 默认端口(22)是服务器基础安全中最简单也最有效的加固手段之一。它不能替代强密码、密钥认证或防火墙策略,但能显著减少自动化扫描和暴力破解攻击的命中率——因为绝大多数攻击脚本只扫 22 端口。
备份配置再动手
操作前务必备份原始配置,避免改错导致无法连接:
- 运行 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 创建备份
- 确认备份存在:ls -l /etc/ssh/sshd_config*
- 新端口建议选 10000–65535 范围内的未占用端口,例如 2222、4433 或 2234
- 检查是否被占用:sudo ss -tuln | grep :2222(无输出表示可用)
编辑 SSH 配置文件
打开并修改主配置文件:
- 执行 sudo vim /etc/ssh/sshd_config
- 查找 #Port 22 行(可能被注释)
- 取消注释,在下方新增一行:Port 2222(不删原 Port 22 更稳妥)
- 保存退出(vim 中按 ESC → 输入 :wq → 回车)
放行新端口并关闭旧端口
防火墙必须同步更新,否则连接会被直接拦截:
- 若用 firewalld(CentOS/RHEL/Alibaba Cloud Linux):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-port=22/tcp
sudo firewall-cmd --reload - 若用 ufw(Ubuntu/Debian):
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo ufw reload - 云服务器还需在控制台安全组中添加对应入方向规则(TCP,端口 2222)
处理 SELinux(如启用)
SELinux 默认只允许 sshd 绑定 22 端口,改端口后服务常启动失败:
- 先临时禁用测试:sudo setenforce 0,再运行 sudo systemctl restart sshd
- 若成功,说明是 SELinux 导致——需添加策略:
sudo semanage port -a -t ssh_port_t -p tcp 2222 - 如提示 semanage 不存在,先安装:sudo yum install policycoreutils-python-utils
- 完成后恢复 enforcing 模式:sudo setenforce 1
重启服务并验证连接
所有配置就绪后,分步验证:
- 重启 SSH:sudo systemctl restart sshd
- 检查状态:sudo systemctl status sshd(应显示 active (running))
- 新开终端,用新端口连接:ssh username@your_ip -p 2222
- 确认连通后,再回到原会话删除配置中的 Port 22 行(可选)
整个过程不复杂但容易忽略防火墙或 SELinux 环节,建议保留默认端口一段时间,等新端口稳定后再彻底停用。

















