服务器被暴力破解,如何修改 SSH 配置文件?

如果你的服务器日志里频繁出现类似 Failed password for root from 203.0.113.5 port 45538 ssh2 这样的记录,说明正在被暴力破解。
直接修改 SSH 配置文件是最有效的第一步防御手段。
下面按零基础也能操作的顺序来走一遍。

操作前要确认的两件事

  1. 你有服务器的 root 权限(或 sudo 权限),并且已经通过 SSH 登录到服务器。
  2. 保留一个已登录的终端不关闭,防止后续配置错误导致掉线后连不上。建议先开启一个新 SSH 窗口测试操作,原窗口留着作为“保命通道”。

修改 SSH 配置:更换端口与禁用密码登录

  1. 用文本编辑器打开 SSH 配置文件:
   sudo vi /etc/ssh/sshd_config

如果你不熟悉 vi,可以用 sudo nano /etc/ssh/sshd_config

  1. 找到 #Port 22 这一行,去掉 # 并将 22 改成其他端口,比如 22222
   Port 22222

注意端口范围最好在 1024–65535 之间,避开常用端口。

  1. 找到 PermitRootLogin yes,改为 PermitRootLogin prohibit-password(禁止 root 使用密码登录,但仍允许密钥登录)。更安全的做法是直接改为 no,但前提是你已经配置好普通用户并通过 susudo 切换。新手建议先用 prohibit-password
  2. 找到 PasswordAuthentication yes,改为 PasswordAuthentication no,彻底关闭密码登录。这一步会让暴力破解工具直接失效。
  3. 保存文件并退出(vi 按 Esc,输入 :wq 回车;nano 按 Ctrl+X,按 Y,回车)。
  4. 重启 SSH 服务让配置生效:
   sudo systemctl restart sshd

如果使用的是 Ubuntu 旧版本,服务名可能是 ssh

   sudo systemctl restart ssh

关键避坑:防火墙和 SELinux 设置

  • 防火墙放行新端口:如果你用的是 ufw,执行:
  sudo ufw allow 22222/tcp
  sudo ufw delete allow 22/tcp   # 可选,等确认新端口正常后再删除旧规则

如果用的是 firewalld(CentOS 7+):

  sudo firewall-cmd --permanent --add-port=22222/tcp
  sudo firewall-cmd --reload
  • 云服务器厂商的安全组:需要登录云控制台,在“安全组”或“防火墙”中添加入站规则,允许新端口的 TCP 访问。记得先放行再测试,避免被安全组拦截。
  • SELinux 加持的系统(如 CentOS 默认启用):如果 SSH 服务无法启动或新端口连不上,可以临时关闭 SELinux 排查:sudo setenforce 0;确认问题后永久放行:
  sudo semanage port -a -t ssh_port_t -p tcp 22222

验证效果与常见问题

如何确认修改生效?

新开一个终端,使用新端口尝试连接:

ssh -p 22222 youruser@your_server_ip

如果连接成功,原窗口可以保留会话或退出。
如果连接失败,立刻用原终端检查配置并恢复

  • 检查 /etc/ssh/sshd_config 是否有语法错误:sudo sshd -t(无输出表示正常)。
  • 查看 SSH 服务状态:sudo systemctl status sshd
  • 确认防火墙已放行新端口。

常见问题解答

Q:改成 PasswordAuthentication no 后,连接时提示“Permission denied (publickey)”,但我还没配置密钥怎么办?
A:先改回 yes,配置好 SSH 密钥对后再修改。生成密钥的方法:本地运行 ssh-keygen -t ed25519,将公钥复制到服务器的 ~/.ssh/authorized_keys 中。

Q:端口修改后,其他服务(如 rsync、git)会受影响吗?
A:只要在连接这些服务时指定新端口即可,或者你可以保留 22 端口给内部信任 IP(需设置 AllowUsers 配合 Match Address)。

进阶加固建议

  1. 安装 fail2ban 自动封禁频繁失败的 IP:
   sudo apt install fail2ban   # Ubuntu/Debian
   sudo yum install epel-release && sudo yum install fail2ban  # CentOS

默认配置即可保护 SSH,监控 Port 22222 对应的日志。

  1. 只允许特定用户登录 SSH,在 sshd_config 中加入:
   AllowUsers yourusername
  1. 定期查看 /var/log/auth.log(Ubuntu)或 /var/log/secure(CentOS)核实暴力破解是否已停止。

执行完上述步骤后,绝大多数暴力破解都会被挡在门外。
如果你正在处理服务器被暴力破解的问题,建议先按本文修改 SSH 配置文件并重启服务,再结合 fail2ban 做双重保护。
过程中遇到任何报错,优先回看避坑部分和常见问题解答,基本都能解决。

分享到:
上一篇
Docker 容器数据备份,如何定期自动备份?
下一篇
用大模型做安全审计,如何发现隐藏的配置错误?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意