MaxSessions用于限制单个TCP连接内并发会话数,如SFTP、shell、端口转发等,默认值10;设为3则同一连接最多3个会话,设0禁用交互式会话但允许转发;需编辑/etc/ssh/sshd_config后重启sshd生效。

直接在 /etc/ssh/sshd_config 中设置 MaxSessions 即可缩减单个已建立 TCP 连接内允许的并发会话数量。这个值控制的是连接复用能力,比如一个 SSH 连接同时开多个终端窗口、运行多个 SFTP 通道或启用端口转发时的上限。
理解 MaxSessions 的实际作用
MaxSessions 不影响用户能登录多少次(那是连接数问题),只限制“同一个 TCP 连接”里最多跑几个子会话。例如:
- 客户端开启连接复用(如配置
ControlMaster auto),然后在该连接上打开 3 个 shell + 2 个 SFTP 传输 → 共 5 个会话 - 若
MaxSessions 3,第 4 个会话请求会被拒绝,常见报错为session open failed: session not allowed - 设为
0时,禁止所有交互式会话(shell/login/SFTP),但允许端口转发等后台功能
修改配置的具体步骤
以将单连接最大会话数设为 3 为例:
- 用 root 权限编辑配置文件:
sudo nano /etc/ssh/sshd_config - 查找或新增一行:
MaxSessions 3 - 如需对特定用户或用户组限制,使用
Match块(注意缩进和顺序):
Match User deploy
MaxSessions 1 - 保存后重启服务:
sudo systemctl restart sshd
验证是否生效
修改后可通过以下方式确认:
- 查看当前配置加载值:
sudo sshd -T | grep maxsessions - 观察客户端行为:启用连接复用后尝试打开第 4 个会话,应被拒绝
- 检查日志(如有):
sudo journalctl -u ssh --since "1 hour ago" | grep -i session
配合其他参数避免误判
单独调低 MaxSessions 可能导致用户误以为连接失败,建议同步检查:
-
MaxStartups:确保未认证连接队列没被挤满(否则连建连都失败) -
ClientAliveInterval和ClientAliveCountMax:防止闲置连接长期占着会话名额 - 客户端是否启用了
ControlMaster:这是触发多会话的主要场景,需用户侧配合调整


















