限制单用户最大ssh连接数需分层配置:①用sshd_config中match user + maxsessions控制已认证会话数;②用limits.conf设nproc间接限制进程总数;③用iptables connlimit防止单ip过度连接;④调高sshd文件描述符上限避免系统级瓶颈。

云服务器上限制单用户最大 SSH 连接数,不能靠 pam_limits.so 直接控制「登录会话数」,因为它只管进程数量(nproc),不区分是 SSH、screen 还是后台脚本。真正有效且可落地的配置,需分层处理:SSH 层面做逻辑限制、系统资源层做兜底、网络层防滥用。
用 sshd_config 的 Match User + MaxSessions 控制已认证会话
这是最标准、最推荐的第一道防线,适用于大多数云环境(阿里云、腾讯云、AWS EC2 等):
- 编辑
/etc/ssh/sshd_config,在文件末尾添加(以用户alice为例):Match User alice<br> MaxSessions 4
-
MaxSessions限制的是「该用户成功认证后能开启的并发会话总数」,包括:
– 多个终端窗口(ssh alice@server)
– SFTP 连接
– 端口转发(ssh -L/-R)
– multiplexing 复用通道 - 注意:它对未完成认证的连接无效,也不限制不同 IP 登录;修改后必须执行
sudo systemctl restart sshd生效
用 limits.conf 限制用户总进程数(间接控连接)
当无法使用 Match(如旧版 OpenSSH 或容器化 SSH 服务),或需更粗粒度压制时,可用此法:
IT技术解决互联网公司网站模板是一款适合提供APP设计、网页开发、SEO优化、云服务、数据分析等服务的互联网公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 编辑
/etc/security/limits.conf,添加:alice soft nproc 6<br>alice hard nproc 6
- 每个 SSH 登录至少占用 2–3 个用户进程(sshd、shell、可能还有 systemd --user),设为 6 意味着大致支持 2–3 个稳定会话,留有余量给
tmux或systemctl --user - 确保
/etc/pam.d/sshd中存在:session required pam_limits.so(多数发行版默认已有) - 用户需完全退出并重新登录才生效;验证命令:
ulimit -u应返回6
用 iptables connlimit 防止单 IP 过度连接(增强防护)
防止一个恶意 IP 用多个账号或脚本反复建连,尤其适合暴露在公网的云服务器:
- 运行命令(限制每 IP 最多 3 个并发 SSH 连接):
sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 32 -j REJECT --reject-with tcp-reset - 搭配
MaxStartups 5:30:10(写入sshd_config),防御未认证半开连接堆积 - 再加一条限速规则,防扫描器高频试探:
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 5/min --limit-burst 5 -j ACCEPT<br>sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
- 规则顺序很重要:限速 → connlimit → 其他;重启后需持久化(如 Ubuntu 用
netfilter-persistent save)
检查并放宽系统级资源上限(避免误伤)
即使上面都配了,若系统本身限制太严,新连接仍会失败:
- 查当前 sshd 能打开多少文件:
cat /proc/$(pgrep -f "sshd -D")/limits | grep "Max open files" - 若显示
1024,建议在/etc/security/limits.conf加:sshd soft nofile 65535<br>sshd hard nofile 65535
- systemd 环境还需:
sudo systemctl edit sshd<br>[Service]<br>LimitNOFILE=65535
- 最后重启:
sudo systemctl daemon-reload && sudo systemctl restart sshd










