maxauthtries是openssh限制单次连接内认证尝试次数的关键参数,设为3可打断暴力破解节奏;需修改sshd_config后执行systemctl reload sshd生效,并必须搭配fail2ban封禁ip才能有效防御。

MaxAuthTries 是 OpenSSH 服务端的关键防护参数,它不控制“每天试几次”,而是限制**单次 TCP 连接内**允许的认证尝试总次数(包括密码、密钥、键盘交互等所有方式)。设为 3 是当前兼顾安全与可用性的主流做法。
它怎么挡住暴力破解?
攻击者发起一次 SSH 连接后,如果连续输错密码或提供无效密钥达到设定值(如 3 次),sshd 会立即断开该连接,返回 “Connection closed by remote host”——连错误提示都不给。这打断了自动化工具在单个连接里批量试密的节奏,大幅压缩爆破效率。
正确配置 MaxAuthTries 的步骤
修改配置必须配合重载服务才生效,漏掉这步等于没改:
- 编辑 /etc/ssh/sshd_config:用 sudo nano 或 vim 打开,添加或取消注释这一行:MaxAuthTries 3
- 保存文件后,执行 sudo systemctl reload sshd(不是 restart)——reload 是热重载,不中断已有连接
- 验证是否生效:运行 sudo sshd -T | grep maxauthtries,输出应为 maxauthtries 3
为什么不能只靠 MaxAuthTries?
它只管“这一次连接”,不管“同一个 IP 来多少次”。攻击者只要快速新建连接,就能绕过限制。所以必须搭配 IP 级封禁工具:
- 安装 Fail2ban:sudo apt install fail2ban(Debian/Ubuntu)或 sudo yum install fail2ban(RHEL/CentOS)
- 启用 sshd 监控规则:复制默认 jail 配置,编辑 /etc/fail2ban/jail.local,确保 [sshd] 段中 enabled = true
- 推荐基础策略:在 10 分钟内失败 3 次,就封禁该 IP 1 小时(对应配置项:maxretry = 3、findtime = 600、bantime = 3600)
- 重启 Fail2ban:sudo systemctl restart fail2ban
搭配其他基础加固更有效
MaxAuthTries + Fail2ban 是核心组合,但加上这几项能进一步收窄攻击面:
- LoginGraceTime 60:限制每次连接只有 60 秒登录窗口,超时自动断开
- PasswordAuthentication no:彻底禁用密码登录,强制使用密钥认证
- PermitRootLogin no:禁止 root 直接远程登录
- AllowUsers user1 user2:显式指定允许登录的用户,拒绝其余所有










