maxstartups采用start:rate:full三段式概率限流机制,如10:30:100:前10个连接立即处理;第11至30个连接拒绝概率线性升至30%;达100时全拒,实现平滑丢弃。

MaxStartups 参数不是简单地“达到多少就全拒”,而是通过三段式概率机制,在未认证连接激增时实现平滑限流,既防攻击又保可用。
理解 MaxStartups 的三值结构
它的格式是 start:rate:full,例如默认的 10:30:100:
- 10:起始阈值,前 10 个未认证连接立即处理,零延迟
- 30:不是百分比数值,而是“概率斜率”的标识符——实际拒绝概率从第 11 个连接开始线性上升,到第 30 个连接时,拒绝率约为 30%
- 100:饱和阈值,未认证连接数达到或超过 100 时,新连接接受率为 0%,即全部丢弃
为什么叫“平滑丢弃”?
它避免了硬限流(如设为 MaxStartups 10)导致的“一过阈值就全拒”,而是让系统在负载爬升过程中逐步施加压力:
- 连接数 = 15 → 接受率 ≈ 85%(被随机丢弃约 15%)
- 连接数 = 50 → 接受率 ≈ 50%(丢弃率升至约 50%)
- 连接数 = 90 → 接受率 ≈ 10%(仅约 1 成请求能进入认证流程)
这种渐进式响应,给真实用户留出“插队”机会,也使自动化攻击脚本成功率大幅下降。
调优建议:兼顾安全与业务场景
不要盲目压低数值。需结合服务器角色、访问来源和并发特征调整:
- 公网跳板机或 CI/CD 代理节点:可设为
5:20:50,严控半开连接,优先保障关键任务通道 - 内网管理服务器(IP 可信、NAT 少):
10:30:60是较稳妥选择,平衡防御与体验 - 高并发运维平台(如 Ansible 批量登录):适当提高
full值(如 100),但必须配合PerSourceMaxStartups防 IP 泛洪
验证是否生效
修改后务必检查实际加载值:
sshd -T | grep maxstartups
若输出为 maxstartups 10:30:60,说明配置已载入;若仍显示旧值,请确认是否重载服务:sudo systemctl reload sshd,且配置文件中无重复定义覆盖。











