linux中ssh并发连接数受maxstartups、maxsessions、系统资源及pam等多重限制;maxstartups防爆破,maxsessions控单连接会话数,需结合ulimit、systemd和fail2ban综合调优。

Linux系统中SSH并发连接数默认没有严格限制,但实际受MaxStartups、MaxSessions、系统级资源(如文件描述符、内存)以及PAM模块等多重机制共同约束。合理配置可防暴力破解、资源耗尽,同时保障运维可用性。
核心配置项:sshd_config中的连接控制
/etc/ssh/sshd_config是SSH服务主配置文件,以下参数直接影响并发行为:
-
MaxStartups:控制未认证连接(即刚建立TCP连接但尚未完成密钥/密码验证)的最大数量,默认常为
10:30:60(表示最多10个初始连接;超过10个时,每新增30个连接随机丢弃1个;达到60个则全部拒绝)。这是防爆破最关键的参数。 - MaxSessions:单个已认证SSH连接内允许的并发会话数(如多窗口、端口转发、SFTP子通道),默认10。不影响登录人数,只影响单用户多任务能力。
-
MaxAuthTries:单次连接允许的认证尝试次数(非并发数),默认6。配合
MaxStartups可缓解密码爆破压力。
系统级资源限制不可忽略
即使SSH配置宽松,OS层面资源不足也会导致新连接失败:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
文件描述符限制:每个SSH连接占用至少2–3个fd。检查
ulimit -n(当前会话)和/etc/security/limits.conf中nofile设置,必要时为sshd进程提升上限。 -
内存与进程数:大量并发连接会增加sshd子进程或线程开销。可通过
ps aux | grep sshd | wc -l观察活跃连接数,结合free -h和top确认内存压力。 -
systemd服务限制(若用systemd管理sshd):检查
/usr/lib/systemd/system/sshd.service或/etc/systemd/system/sshd.service.d/override.conf中LimitNOFILE、TasksMax等设置。
借助PAM与fail2ban实现动态防护
静态配置之外,可叠加运行时策略增强安全性:
-
PAM限速:在
/etc/pam.d/sshd中添加:auth [default=ignore] pam_faildelay.so delay=3000000
表示每次认证失败后延迟3秒,有效拖慢暴力尝试节奏。 -
fail2ban自动封禁:监控
/var/log/auth.log,对频繁失败IP自动加入iptables或firewalld黑名单。适用于防范扫描类攻击,不直接限制并发数,但显著降低无效连接压力。
验证与调试方法
修改配置后需重启服务并实测效果:
- 执行
sudo systemctl restart sshd(或service ssh restart),再用sudo ss -tnp | grep :22查看监听状态。 - 用脚本模拟并发连接(如
for i in {1..50}; do ssh -o ConnectTimeout=2 -o BatchMode=yes user@host 'echo ok' & done),观察是否出现Connection refused或Too many authentication failures提示。 - 检查日志:
sudo tail -f /var/log/auth.log | grep "sshd\[",重点关注max startups、fork failed、open files等关键词。










