maxstartups 是 openssh 限制未认证连接数的参数,语法为 start:rate:full,如 10:30:60 表示初始允许 10 个、超限后每 30 个随机拒 1 个、达 60 个则全拒;需修改 /etc/ssh/sshd_config 并 systemctl restart sshd 生效,reload 无效。

MaxStartups 是 OpenSSH 服务端用来限制“已建立 TCP 连接但尚未完成身份认证”的连接数的关键参数,专防暴力扫描、密码穷举和未认证连接堆积。它不看用户名或 IP,只统计所有处于 handshake 后、auth 成功前的连接。
理解 MaxStartups 的三段式语法
格式为 start:rate:full,例如 10:30:60:
- start(初始阈值):最多允许 10 个未认证连接排队;
- rate(丢弃概率):超过 10 个后,每新增 30 个连接,随机拒绝 1 个(即约 3.3% 概率);
- full(硬上限):达到 60 个未认证连接时,直接拒绝所有新连接,不再尝试丢弃。
这种设计兼顾了突发请求容忍度与资源保护——既不让正常批量登录失败,也不给扫描器留出堆积空间。
修改配置并生效
编辑主配置文件:
sudo nano /etc/ssh/sshd_config
添加或修改这一行(推荐从保守值起步):
MaxStartups 5:50:20
含义:最多 5 个排队,超限后每 50 个丢 1 个,20 个就全拒。适合中小规模运维环境。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
保存后必须重启服务才能生效:
sudo systemctl restart sshd
注意:reload 不会重载 MaxStartups,只有 restart 有效。
验证是否起作用
检查日志确认是否触发限流:
sudo grep "max startups" /var/log/auth.log
若看到类似 sshd[12345]: error: max startups 5 exceeded,说明配置已生效且正在拦截。
也可用脚本快速测试(需在另一台机器执行,避免本地连接干扰):
for i in {1..25}; do ssh -o ConnectTimeout=2 -o BatchMode=yes user@your-server exit 2>/dev/null & done; wait
观察第 20 个左右连接是否明显变慢或失败。










