sshd之MaxSessions
参数是 OpenSSH 的并发连接控制关键参数,在高并发场景(比如堡垒机、跳板机、自动化运维平台)里很重要。
1.MaxSessions 10000
- 含义:单个 SSH 连接里允许的最大并发会话数。
- 一个 TCP 连接 上可以有多个 channel/session(比如开了一个 SSH 连接后再执行
ssh -N -L ...做端口转发,或ControlMaster复用时的多路会话)。 - 默认值:
10 - 你设置为
10000,代表 一个 TCP SSH 连接内最多允许 1 万个会话。
⚠️ 风险:
- 通常没必要设置这么大。一般几十个会话够用。过高会增加内存和 CPU 负担,如果恶意用户开大量 channel,可能导致 sshd 被打爆。
2.MaxStartups 5000:50:10000
这是更复杂的参数,控制 同时处于未认证状态的并发连接数,格式是:
MaxStartups start:rate:full
start:无条件允许的最大未认证连接数。
rate:超过 start 后,额外连接会被随机丢弃的概率(百分比)。
full:达到这个值后,所有新连接直接拒绝。
start = 5000
→ 最多允许 5000 个并发未认证连接。rate = 50
→ 超过 5000 后,每个新连接有 50% 概率被拒绝。full = 10000
→ 当达到 10000 个未认证连接时,完全拒绝所有新连接。
3.举个例子
假设你有很多客户端同时 ssh 上来:
- 前 5000 个未认证连接:都允许。
- 第 5001 个开始:有 50% 概率被拒绝。
- 达到 10000:新连接一律拒绝。
这样做的目的是 防止暴力 SSH 爆破或 DoS 攻击 ——避免无限堆积未认证连接把 sshd 资源耗尽。
4.结合你的配置来看
MaxSessions 10000
→ 理论上单连接可开 10000 个 session,不太现实,可能是你测试/压测环境。MaxStartups 5000:50:10000
→ 允许巨量未认证连接并发,属于极端大并发场景(正常服务器几百就够)。
⚠️ 生产风险:
这两个值过大可能会导致 sshd 资源耗尽、内存压力大、甚至触发内核 OOM。
建议根据机器性能 & 并发需求调优。一般:
MaxSessions 50 ~ 200足够。MaxStartups 100:30:200就很安全。