需协同调整maxstartups(未认证连接限流)和maxsessions(单连接内会话数),并同步提升系统文件描述符等资源限制,否则仅调单一参数无效。

Linux 中修改 SSH 服务的“最大认证并发连接限制”,需明确区分两个关键概念:未认证连接数(MaxStartups) 和 已认证后的会话复用上限(MaxSessions)。很多人误以为改一个参数就能放开所有并发,结果调了 MaxSessions 却卡在 MaxStartups,或反过来——真正起效的是协同调整。
MaxStartups:控制未完成认证的连接洪水
这是 SSH 服务端抵御暴力破解和连接风暴的第一道闸门,管的是“刚连上、还没输密码/没过密钥验证”的 TCP 连接。
-
默认值通常是
10:30:60,含义是:- 最多允许 10 个未认证连接排队;
- 超过 10 后,每新增 30 个连接就随机丢弃 1 个(概率限流);
- 达到 60 个时,直接拒绝所有新连接。
-
若你有 CI/CD 工具批量拉起连接、或大量用户集中登录,建议调高:
MaxStartups 50:100:200
这样更弹性,避免突增流量被误杀。
-
修改后必须重启服务才生效:
sudo systemctl restart sshd
-
验证是否生效:
sudo sshd -T | grep maxstartups
查日志确认是否真被限流:
grep "max startups" /var/log/auth.log
MaxSessions:限制单个已认证连接内的并发逻辑会话
它不控制“多少人能登录”,而是控制“同一个用户用一个 SSH 连接(比如开启了 ControlMaster)最多开几个命令、SFTP、端口转发”。
默认是
10,设为32对自动化工具和远程开发更友好;
Zynq Linux Hardware Debug下载Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
设得太低(如
3),会导致 SFTP 批量上传失败、IDE 多标签页断连、ssh -L端口转发报错等;注意:每个会话至少占用 2 个文件描述符,所以不能只调这个值,还得看系统资源上限。
-
修改方式(在
/etc/ssh/sshd_config中):MaxSessions 32
-
检查语法 + 重载:
sudo sshd -t && sudo systemctl reload sshd
系统级资源:真正的天花板
即使上面两个都调高了,若系统文件描述符(nofile)或进程数(nproc)没跟上,连接仍会被内核拒绝,典型错误:
accept: Too many open files
-
查当前 sshd 进程限制:
cat /proc/$(pgrep -f "sshd -D")/limits | grep "Max open files"
-
永久放宽(三步缺一不可):
- 在
/etc/security/limits.conf加:sshd hard nofile 65535 * hard nofile 65535
- 确保
/etc/pam.d/sshd包含:session required pam_limits.so
- systemd 用户还需:
sudo systemctl edit sshd
写入:
[Service] LimitNOFILE=65535
- 在
别忘了隐性干扰项
-
PAM 认证延迟:
/etc/pam.d/sshd中若有pam_faildelay.so delay=3000000,会让连续失败拖慢节奏,间接压低有效并发; -
fail2ban 封禁:被封的 IP 根本进不了 MaxStartups 计数,排查时可临时停用验证:
sudo systemctl stop fail2ban
不复杂但容易忽略。










