改SSH默认端口本身不增强密码或密钥强度,但能显著减少被自动化扫描器和暴力破解工具盯上的概率;推荐选用10000–65535间五位数端口(如27391),需先检查空闲、双端口共存验证、再配IP白名单及防火墙规则。

改 SSH 默认端口本身不增强密码或密钥强度,但能显著减少被自动化扫描器和暴力破解工具盯上的概率——多数脚本只扫 22 端口,换一个高位端口,相当于把门藏进小区楼栋里,让随机探针直接跳过。
选一个安全又实用的新端口
别用 1–1023 的特权端口(除非你明确配置了 capability 或 SELinux),也避开常见服务端口(如 80、443、3306、8080)。推荐从 10000 到 65535 中挑一个五位数,比如 27391 或 54182。
- 先检查是否空闲:
ss -tuln | grep ':27391',没输出说明可用 - 确认没被 nginx、面板、数据库等其他进程占用
- 避免选以 0 结尾的端口(部分老旧扫描器会跳过,反而暴露规律)
双端口共存,稳住连接不断线
千万别一上来就注释掉 Port 22!正确做法是让新旧端口同时运行,验证无误后再下线旧端口。
- 编辑
/etc/ssh/sshd_config,保留Port 22,下方新增一行Port 27391 - 重启服务:
sudo systemctl restart sshd - 新开终端测试:
ssh -p 27391 user@your-ip,连通后再操作下一步
用 iptables 锁死访问来源
只开放端口还不够,必须限制谁能连。哪怕换了端口,如果对全网开放,照样会被扫到。
- 只允你的固定公网 IP 连新端口:
sudo iptables -A INPUT -p tcp -s 203.123.45.67 --dport 27391 -j ACCEPT - 拒绝其他所有对该端口的请求:
sudo iptables -A INPUT -p tcp --dport 27391 -j DROP - 22 端口可保留,但同样加 IP 限制(作为应急通道)
- CentOS 7+ 若用 firewalld,请统一用
firewall-cmd,勿混用 iptables
验证后清理,再加一层保险
新端口连得上、iptables 规则生效、当前会话仍在线——满足这三点,才算真正过渡完成。
- 再次编辑
sshd_config,把Port 22行前面加#注释掉 - 重启 sshd,再用新端口重连一次
- 确认成功后,删掉 iptables 中针对 22 端口的放行规则(如有)
- 可选:装 fail2ban,对新端口的失败登录自动封 IP,形成“隐藏 + 阻断”组合
不复杂但容易忽略——关键不在端口号本身,而在于“双端口过渡”和“IP 白名单”这两步。做完,大部分扫段脚本就再也碰不到你的 SSH 了。

















