maxsessions控制单个已认证ssh连接内并发逻辑会话数,如命令、sftp、端口转发,默认值10;设为3后第4次会话即被拒绝,需修改sshd_config并重启服务生效。

理解MaxSessions的实际作用
MaxSessions控制的是单个已成功认证的SSH TCP连接内部,能同时开启多少个逻辑会话通道。它不控制用户数量、不控制并发登录数,只管“一个连接里最多跑几个命令/SFTP/端口转发”。默认值通常是10,意味着哪怕你只用一个ssh连接(比如开启了ControlMaster),最多也只能并行执行10个子操作。
修改sshd_config设置具体数值
编辑主配置文件:
sudo nano /etc/ssh/sshd_config
在文件任意空白处添加或修改这一行(例如限制为3):
MaxSessions 3
注意:该参数不支持通配符或用户粒度设置,是全局生效的。如果需按用户差异化控制,需结合PAM或应用层代理实现。
验证语法并重启服务
修改后必须检查配置合法性,避免因语法错误导致SSH服务无法启动:
- 运行 sudo sshd -t —— 无输出即表示语法正确
- 重启服务使配置生效:sudo systemctl restart sshd
- 确认当前值:sudo sshd -T | grep maxsessions
观察效果与典型反馈
设为较低值(如2或3)后,用户在已有连接中尝试第4次新开会话时,会立即收到类似提示:
Write failed: Broken pipe 或 session open failed: channel open failed: administratively prohibited
常见触发场景包括:快速连打多个ssh user@host command、SFTP客户端批量上传、IDE远程终端开多标签页、或脚本中未关闭前一会话就发起新请求。这些行为都会受MaxSessions硬性截断。











