修改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——这是你的逃生通道。编辑配置文件:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 用 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确认状态正常

















