服务公告

服务公告 > 常见问题 > 服务器被 sshd 拒绝连接:MaxStartups 与速率限制

服务器被 sshd 拒绝连接:MaxStartups 与速率限制

发布时间:2026-07-29 16:52
## 症状现象 并发批量 SSH 连接时,部分连接直接被拒,报连接被重置,稍后重试又正常。单台手动登录毫无问题,脚本批量执行或跳板分发命令时成批失败。sshd 进程与负载都正常,现象只与并发量相关。 ## 定位过程 这是 sshd 的并发未认证连接保护在起作用。MaxStartups 参数控制同时处于握手与认证阶段的连接数,默认按梯度丢弃:超过起始阈值后按比例随机丢,达到硬上限全丢。批量连接同时发起时大量停留在认证阶段,触发丢弃完全符合症状。日志里 grep sshd 能看到连接被断开的记录,与失败时间吻合即可确认。 ``` grep -i "maxstartups\|reset\|closed" /var/log/secure | tail sshd -T | grep -i maxstartups ``` ## 解决方法 按并发规模调整参数:把梯度改成高起点、把硬上限抬高,例如三十起三十落两百上限的写法,改完重启 sshd。另一侧的解法是客户端收敛:并行连接数降到阈值内,或改用控制复用,一条连接跑多条命令,从根上减少并发握手。密钥认证比口令认证握手更快,认证阶段停留时间缩短,队列周转更快。 ## 预防建议 批量管理工具的并发参数要小于服务端保护值,两边写进部署文档。顺云云服务器需要大批量分发命令时,优先用配置管理工具的长连接通道,而不是每台每命令都新建 SSH 连接,既快也稳。 另一个容易混淆的相邻参数是会话数限制与会话超时,它们限制的是已认证的会话,与 MaxStartups 管的未认证队列是两码事。批量失败时先分清卡在哪一段:连接被拒在认证前,多半是并发保护;认证后断开,方向在会话配置。 安全维度的权衡也提一句:保护值调高意味着并发握手的资源消耗上限变高,配合密钥认证与来源白名单使用更稳妥。管理大群的机器,长期方向是配置管理工具的常驻通道,SSH 只留人工应急,两类流量分开后,参数压力自然消失。