先留后路:改端口前务必保留Port 22,再新增自定义端口(如2222),确保端口在1024–65535范围内且未被占用;验证端口空闲、防火墙放行、SELinux授权后,用ssh -p 2222 localhost测试成功,再注释Port 22并重启sshd;禁用PermitRootLogin前须创建带sudo权限的普通用户并验证提权;云服务器需同步开放安全组规则,所有SSH相关工具须显式指定新端口。

先留后路:改端口前务必保留22端口
别一上来就注释或删掉Port 22。这是最常导致“被锁门外”的操作——新端口若因防火墙、SELinux或配置冲突不通,旧通道又已关闭,你就彻底失联了。
正确做法是:打开/etc/ssh/sshd_config,确保有这一行:Port 22
再另起一行添加你选的新端口,例如:Port 2222
端口号必须在1024–65535之间,且未被其他进程占用。
验证三连:端口空闲、防火墙放行、SELinux授权
保存配置后,不重启服务,先快速检查三项:
- 查端口是否空闲:
sudo ss -tuln | grep ':2222'—— 若有输出,说明已被占用,需换端口 - 查防火墙规则:
sudo ufw status(Ubuntu/Debian)或sudo firewall-cmd --list-ports(CentOS/RHEL),确认2222/tcp在允许列表中 - 查SELinux上下文(仅RHEL/CentOS系):
semanage port -l | grep ssh,若新端口不在输出里,执行:sudo semanage port -a -t ssh_port_t -p tcp 2222
平滑切换:测试成功后再停用22端口
用另一终端执行:ssh -p 2222 user@localhost,本机直连最快验证是否生效。成功后,再回到配置文件,把Port 22行注释掉(加#),保存并重启:sudo systemctl restart sshd。
重启时保持一个已登录的终端不关闭——这是最后的安全垫。如果新端口连不上,立刻回退修改配置,再重启即可恢复。
禁用Root直连:不止改配置,还要配权限和审计基础
编辑/etc/ssh/sshd_config,找到PermitRootLogin项,设为:PermitRootLogin no
但切记:禁用前必须完成以下两件事,否则你会永久失去管理入口:
- 创建普通用户并设强密码:
adduser admin && passwd admin - 授予该用户sudo权限:
usermod -aG sudo admin(Ubuntu/Debian)或usermod -aG wheel admin(CentOS/RHEL)
然后测试:ssh admin@your-server-ip -p 2222 → sudo su -,确认可提权且操作日志完整。
落地收尾:别漏掉云平台和自动化脚本
改完端口≠万事大吉。这两步90%的人会忽略,却直接导致后续故障:
- 云服务器(阿里云、腾讯云、AWS等)必须在控制台安全组中手动添加入方向规则:允许TCP 2222(或你设的端口),仅开放给可信IP更佳
- 所有依赖SSH的工具都要更新端口参数:CI/CD流水线、rsync命令、scp上传、定时备份脚本、监控探针……凡是含
ssh、scp、rsync -e "ssh -p..."的地方,都得显式加上-p 2222
端口和root登录只是第一道门。真正守住系统的,是密钥认证 + Fail2ban + 登录白名单组合。改端口防的是扫雷,禁root防的是越权,二者合起来,才把门从虚掩变成带锁带哨的铁闸。










