导读:一台暴露在公网的VPS,上线几分钟内SSH端口就会被自动化脚本扫描。默认22端口加root密码登录,是最常见的攻击面。本文用6个实操配置,把绝大多数自动化攻击挡在门外。
一、修改默认端口
编辑SSH配置:
nano /etc/ssh/sshd_config
把 Port 22 改为一个高位端口,例如:
Port 51234
重启服务生效:
systemctl restart sshd
注意:如果开了防火墙,先放行新端口再重启服务,否则会把你自己锁在外面。
二、禁止root直接登录
在sshd_config中设置:
PermitRootLogin no
日常使用普通账号登录,需要提权时用 sudo。攻击者最常爆破的就是root,禁掉它等于砍掉一半攻击面。
三、改用密钥登录,关闭密码登录
在本地电脑生成密钥:
ssh-keygen -t ed25519
上传公钥到服务器:
ssh-copy-id -p 51234 user@你的IP
确认密钥登录正常后,再关闭密码登录:
PasswordAuthentication no PubkeyAuthentication yes
密钥登录基本免疫暴力破解,这是性价比最高的一步加固。
四、限制登录用户与来源IP
只允许指定用户登录:
AllowUsers user
如果有固定办公IP,再用防火墙限制来源:
ufw allow from 1.2.3.4 to any port 51234 ufw deny 51234
双保险之后,扫描器连握手的机会都没有。
五、安装fail2ban防暴力破解
apt install fail2ban -y
新建本地配置 /etc/fail2ban/jail.local:
[sshd] enabled = true maxretry = 5 bantime = 3600
含义:5次失败自动封禁来源IP一小时。重启服务:
systemctl restart fail2ban
用 fail2ban-client status sshd 可以查看当前封禁列表。
六、可选:开启两步验证
安装 libpam-google-authenticator 后运行 google-authenticator 扫码绑定,再在sshd_config中配置:
AuthenticationMethods publickey,keyboard-interactive
适合存放重要数据的机器,普通个人博客可跳过。
七、改完后的验证清单
- 用新端口登录一次:ssh -p 51234 user@IP;
- 用 lastb 和 journalctl -u sshd 查看失败登录记录,确认防护生效;
- 保留一个已登录的会话再重启服务,万一配置写错还能救回来。
总结
加固的核心思路是提高攻击成本:改端口过滤掉大部分扫描,密钥登录杜绝密码爆破,fail2ban兜底处理漏网之鱼。配置要一步一步改、每步都验证,切忌一次性全改后重启。



