禁用SSH密码登录并启用密钥认证、限制登录尝试次数、修改默认端口、限制可登录用户及禁用root远程登录,是防范暴力破解最有效的四步加固措施。

禁用SSH密码登录、改用密钥认证,并限制登录尝试次数,是防范暴力破解最有效的基础措施。
关闭密码认证,强制使用SSH密钥
密码容易被爆破,而私钥(尤其配合密码短语)安全性高得多。修改 /etc/ssh/sshd_config:
- 将 PasswordAuthentication yes 改为 PasswordAuthentication no
- 确保 PubkeyAuthentication yes 已启用(默认通常开启)
- 建议同时设 PermitEmptyPasswords no(防空密码)
保存后执行 sudo systemctl restart sshd 生效。操作前务必确认你的密钥已正确部署并能正常登录,避免被锁在服务器外。
限制失败登录次数与响应延迟
即使未禁用密码,也应限制尝试频率。推荐使用 fail2ban(更灵活)或直接配置 sshd 内置限制:
- 在 /etc/ssh/sshd_config 中添加:
MaxAuthTries 3(单次连接最多试3次)
LoginGraceTime 60(登录窗口仅60秒) - 搭配 fail2ban 可自动封禁IP:监控 /var/log/auth.log,对5分钟内失败3次的IP封禁1小时
其他关键加固建议
单一措施不够,需组合使用:
- 修改默认端口:把 Port 22 改成非标准端口(如2222),虽不能防专业攻击,但可大幅减少自动化扫描
- 限制可登录用户:用 AllowUsers user1 user2 或 AllowGroups sshusers 明确授权范围
- 禁用root远程登录:设 PermitRootLogin no,所有管理通过普通用户+sudo完成
验证与日常维护
每次调整后必须验证效果:
- 新开终端测试密钥登录是否成功,再尝试密码登录是否被拒绝
- 用 sudo fail2ban-client status sshd 查看封禁状态(若启用fail2ban)
- 定期检查 /var/log/auth.log,留意异常IP和高频失败记录
不复杂但容易忽略。做完这四步,SSH服务面对常见暴力破解已足够稳健。










