修改ssh端口需同步配置防火墙、selinux及云安全组,缺一不可;先保留port 22作为逃生通道,新增目标端口(如2222),检查语法、放行端口、重启服务并验证连通后,再禁用22端口。

修改 SSH 默认监听端口不是改一行配置重启就完事的事——漏掉防火墙、SELinux 或云安全组中的任意一环,新端口就通不了,而且你很可能把自己锁在外面。
确认新端口空闲并备份配置
选一个 1024–65535 范围内的端口(比如 2222、5678),先检查是否已被占用:
- 运行 sudo ss -tuln | grep ':2222',无输出表示可用
- 避开常见端口(如 80、443、3306、8080)和已启用服务的端口
- 执行 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 备份原配置
双端口过渡:保留 22,新增目标端口
别一上来就删 Port 22——这是你的逃生通道。编辑配置文件:
- 用 sudo nano /etc/ssh/sshd_config 打开
- 找到
#Port 22,取消注释,保持为 Port 22 - 另起一行添加 Port 2222(替换成你选的端口)
- 保存前运行 sudo sshd -t 检查语法,无输出才合法
同步放开所有拦截层
系统防火墙、SELinux、云平台安全组,三者缺一不可:
-
UFW(Ubuntu/Debian):
sudo ufw allow 2222/tcp && sudo ufw reload -
firewalld(CentOS/RHEL/Rocky):
sudo firewall-cmd --permanent --add-port=2222/tcp && sudo firewall-cmd --reload -
SELinux 启用时(如 CentOS 默认):
sudo semanage port -a -t ssh_port_t -p tcp 2222;若提示命令未找到,先装policycoreutils-python-utils - 云服务器(阿里云/AWS/腾讯云):必须登录控制台,在实例对应的安全组中添加入方向 TCP 规则,端口填 2222
验证成功后再关闭旧端口
保持当前 SSH 会话不断开,按顺序操作:
- 重启服务:sudo systemctl restart sshd
- 新开终端测试:ssh -p 2222 username@your_server_ip
- 连通后,回到原会话,删掉或注释掉配置中的
Port 22行,再重启一次 sshd - 可选验证:
ss -tulnp | grep :2222看是否真在监听,systemctl status sshd确认状态正常











