文档首页> 技术教程> 修改 SSH 端口与防暴力破解的配套做法

修改 SSH 端口与防暴力破解的配套做法

发布时间:2026-07-04 21:58        更新时间:2026-07-05 18:42
改 SSH 端口这件事,十个人里总有一两个把自己锁在门外。原因基本都是改完端口才想起来防火墙或安全组没放行。按下面的顺序做,可以稳稳落地。 先留后路 改动前开两个 SSH 会话:一个用来改配置,另一个保持连接不动,作为验证失败时的退路。那个不动的连接就算配置出错也不断线,等于随身带着退路。顺手备份配置:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。 改端口 编辑 /etc/ssh/sshd_config,先加新端口、暂留旧端口: Port 22 Port 2222 两行并存的过渡期,新旧端口都能连,验证充分了再收掉旧的。CentOS 还要告知 SELinux:semanage port -a -t ssh_port_t -p tcp 2222,没有 semanage 命令就先 yum install -y policycoreutils-python。端口定下来就别再频繁换,客户端、监控和定时任务里的端口号都要跟着改,换一次就是一轮全量更新。 同步防火墙与安全组 firewall-cmd --permanent --add-port=2222/tcp && firewall-cmd --reload ufw 用户则是 ufw allow 2222/tcp。 云服务器记得同步放行控制台安全组里的 2222 端口,这一步最容易被漏掉。安全组管的是机器外面的门,防火墙管系统内部,两边任一没放行,连接表现都是超时而不是拒绝——凭这个差别能快速判断该去查哪一层。 重启与验证 sshd -t 先做语法检查,没问题再 systemctl restart sshd。更直接的确认办法是 ss -tlnp | grep 2222,看到 sshd 在新端口上处于 LISTEN 状态再去连。Ubuntu 22.04 之后服务名是 ssh 而不是 sshd,重启命令对应换成 systemctl restart ssh,拿不准就 systemctl list-units | grep ssh 看一眼实际名字。新开窗口执行 ssh -p 2222 deploy@服务器IP,能登录后,回到配置删掉 Port 22 那行,再重启一次,旧端口从此关闭。 配套的防爆破手段 改端口能挡掉大半无脑扫描,但挡不住定向尝试,建议配合 fail2ban 做自动封禁,jail 里的 port 参数要写成 2222 与新端口保持一致,配置方法站内有专文。装好后用 fail2ban-client status sshd 查一下封禁列表,能看到记录才说明规则真的在工作;封禁时长从默认的十分钟起步,遇到定向尝试频繁就调到一天。 收尾时确认三点:新端口能连、备份文件留在原处、新端口号已经写进团队文档。端口选 1024 到 65535 之间的高位段即可,不必刻意追求生僻。再顺带拧两颗螺丝:sshd 配置里 LoginGraceTime 30 缩短认证等待,MaxAuthTries 4 限制单连接的尝试次数,与改端口、fail2ban 凑成一套组合。