服务器总是被暴力破解?这几招帮你把 SSH 防守固若金汤
最近在折腾服务器的时候,看到日志里一堆红色的报错,心里一慌:"这提示是不是有人一直在暴力破解我的 root 密码?"
如果你也遇到了类似的情况,先别慌,这在 VPS 圈子里简直太常见了。只要你的服务器暴露在公网上,并且开启了 SSH 默认的 22 端口,那你就是全网扫描机器眼中的"肥羊"。今天我们就来聊聊,这种攻击到底是怎么回事,以及我们普通用户该怎么把自己这台小服务器加固成铁桶。
这种"爆破"到底是个啥?
服务器日志中常见的SSH暴力破解记录,显示大量来自不同IP的登录失败尝试。
简单来说,这就是一场毫无技术含量的"广撒网"。黑客控制的僵尸网络会在互联网上疯狂扫描 IP,发现开放了 22 端口的服务器后,就会拿着字典(常见的密码库,比如 123456, password, root 等)疯狂尝试登录。
如果是单纯的密码错误,只要你的密码够复杂,他们理论上破解成功需要几百年。但怕就怕两点:一是你的密码设成了 admin123 这种弱口令,分秒被破;二是大量的攻击请求会占用你的 CPU 和带宽资源,导致服务器响应变慢,甚至被云服务商因为"对外发起/遭受异常攻击"而警告封锁。
所以,面对这种骚扰,我们不能坐视不理。
第一招:弃用密码,改用 SSH 密钥(最推荐)
这是防御暴力破解最彻底的方法,没有之一。密码是可以被猜出来的,但私钥几乎是不可被暴力破解的。
操作思路如下:
SSH密钥对工作原理:私钥保留在本地,公钥放置在服务器,实现免密安全登录。
- 在自己电脑上生成密钥对:如果你用的是 Windows,可以使用 PowerShell 或 Git Bash;如果是 Mac/Linux,直接打开终端。输入命令:
(ssh-keygen -t ed25519 -C "你的邮箱"ed25519是目前公认更安全且性能更好的算法,如果老设备不支持,可以用rsa -b 4096)。 - 把公钥上传到服务器:生成后,会有
id_ed25519(私钥,留在电脑)和id_ed25519.pub(公钥,给服务器)。你可以用ssh-copy-id命令一键上传,或者手动把公钥内容复制到服务器的~/.ssh/authorized_keys文件里。 - 关闭密码登录:这一步很多小白会忘,却是关键!修改服务器上的
/etc/ssh/sshd_config文件,找到PasswordAuthentication这一项,把它改成no。 - 重启 SSH 服务:
systemctl restart sshd。
做完这套操作,即使黑客知道你的密码也没用,因为服务器根本就不接受密码验证了。记得千万保管好你的私钥,丢了服务器可就真的进不去了(除非去云控制台用 VNC 救援模式)。
第二招:修改默认 SSH 端口
22 端口是攻击者的最爱,因为扫描全网的 22 端口效率最高。如果你把它改成 22222 或者其他高位端口,就能挡住 99% 的脚本小子。
修改步骤:
依然是编辑 /etc/ssh/sshd_config,找到 #Port 22,去掉注释,把 22 改成你想要的端口(比如 23456)。同时建议在这里保留一条 Port 22 作为备用,测试新端口没问题后再回来删掉,以免把自己关在门外。
记得去云服务商控制台的**安全组(防火墙)**里放行这个新端口,别光在系统里改了,外面墙堵着还是白搭。
第三招:安装 Fail2Ban 自动封禁
如果一定要用密码登录,或者想多加一道防线,那就必须上 Fail2Ban。它的作用很简单:监控日志,一旦发现某个 IP 连续几次登录失败,就直接在防火墙层面把它拉黑,比如封禁 1 小时或永久。
安装与配置(以 Debian/Ubuntu 为例):
- 安装:
apt install fail2ban - 配置:新建一个配置文件
jail.local(不要改原文件,更新会被覆盖):[DEFAULT] bantime = 3600 # 封禁时间,秒 findtime = 600 # 在这时间内失败多少次触发 maxretry = 5 # 最大重试次数
[sshd]
enabled = true
port = ssh # 如果你改了端口,这里要改成具体的数字,比如 port = 23456
```
3. 启动:systemctl start fail2ban 和 systemctl enable fail2ban。
你可以用 fail2ban-client status sshd 命令查看当前有多少倒霉蛋被封了。看着那一长串被封 IP 的列表,心里顿时就有安全感了。
总结
服务器遭遇 SSH 爆破就像住在大街上,总有人来试着拧你家门把手。
对于新手,我最推荐的组合拳是:SSH 密钥登录 + 修改默认端口。这两步做完,基本可以高枕无忧。如果你不想折腾密钥,至少也要保证密码极其复杂(16位以上大小写+数字+符号),并且把 Fail2Ban 跑起来。
别等到数据被删了才后悔,安全加固宜早不宜迟!

评论已关闭