真正起效的SSH认证限制需分三层:连接级(MaxAuthTries 3 + LoginGraceTime 60)、账户级(pam_faillock deny=3)、IP级(fail2ban maxretry=3),并必须禁用密码登录(PasswordAuthentication no)。

限制 SSH 最大认证重试次数不能只靠单一配置,因为不同层级的限制作用范围和效果完全不同。真正起效的方案是分三层设置:连接级、账户级、IP 级,缺一不可。
连接级限制:用 MaxAuthTries 控制单次连接内尝试次数
这是最基础、无需额外服务的内置防护,仅对一次 TCP 连接生效:
- 编辑 /etc/ssh/sshd_config,添加或修改两行:
- MaxAuthTries 3:单次连接最多允许 3 次认证尝试(密码、密钥、键盘交互等全部算在内)
- LoginGraceTime 60:连接建立后仅 60 秒登录窗口,超时自动断开
- 执行 sudo systemctl reload sshd 生效
⚠️ 注意:攻击者可快速新建连接绕过此限制,它只是第一道缓冲,不是最终防线。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
账户级锁定:用 pam_faillock 实现用户维度失败计数
适用于 RHEL/CentOS 7+/Ubuntu 20.04+ 等主流系统,按用户独立计数并自动锁定:
- 编辑 /etc/pam.d/sshd,在 auth 段最开头插入两行(顺序不能错):
- auth [default=die] pam_faillock.so preauth silent deny=3 unlock_time=600 fail_interval=900
- auth [default=bad] pam_faillock.so authfail
- 再编辑 /etc/pam.d/system-auth(或 password-auth),同样加这两行
- 参数说明:deny=3 表示第 3 次失败后立即拒绝;unlock_time=600 即 10 分钟后自动解锁;fail_interval=900 只统计最近 15 分钟内的失败记录
- 查看状态:faillock --user username;手动解锁:faillock --user username --reset
IP 级封禁:用 fail2ban 自动拉黑高频失败来源
这是防暴力破解的核心手段,实时监控日志并调用防火墙封禁 IP:
- 安装:apt install fail2ban(Debian/Ubuntu)或 yum install fail2ban(RHEL/CentOS)
- 复制配置:cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- 编辑 /etc/fail2ban/jail.local,确保 [sshd] 段启用:
- enabled = true
- maxretry = 3(10 分钟内失败 3 次)
- findtime = 600
- bantime = 3600(封禁 1 小时)
- logpath = /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(RHEL/CentOS)
- 启动服务:sudo systemctl enable --now fail2ban
必须同步关闭密码登录才真正安全
只要 PasswordAuthentication yes 还开着,所有重试限制都只是拖延时间:
- 编辑 /etc/ssh/sshd_config,确认以下三项已设置:
- PasswordAuthentication no
- PubkeyAuthentication yes
- PermitRootLogin no
- 保存后执行 sudo systemctl restart sshd
- 操作前务必验证密钥登录可用,否则可能被锁死

















