Linux SSH 连接数管理是系统运维中的重要环节,合理的连接数配置既能保障服务器的安全性,又能提升用户体验,本文将从 SSH 连接数的基本概念、查看方法、优化策略、安全限制及常见问题五个方面,详细阐述如何高效管理 Linux 系统中的 SSH 连接数。

SSH 连接数的基本概念
SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录服务,SSH 连接数指的是当前通过 SSH 协议与服务器建立的活跃会话数量,每个连接都会占用服务器端的系统资源,包括内存、CPU 和文件描述符等,默认情况下,Linux 系统对 SSH 连接数没有严格限制,但如果连接数过多,可能导致服务器资源耗尽,甚至引发拒绝服务(DoS)攻击,合理管理 SSH 连接数是保障服务器稳定运行的关键。
查看当前 SSH 连接数
在管理连接数之前,首先需要掌握查看当前连接状态的方法,以下是几种常用的命令:
-
使用
ss或netstat命令
ss是 Linux 下替代netstat的工具,性能更优,执行以下命令可查看当前 SSH 连接的详细信息:ss -tunpa | grep ssh
或使用
netstat:netstat -tunpa | grep ssh
命令输出中,
State列显示连接状态(如ESTAB表示已建立连接),Recv-Q和Send-Q列分别表示接收和发送队列的长度。 -
使用
who或w命令
这两个命令可查看当前登录系统的用户信息,包括登录终端、时间和来源 IP:who | grep "ssh" w | head -n 5
通过输出结果,可以直观了解当前 SSH 登录用户数量及会话状态。
-
查看
/var/log/wtmp日志
系统会记录所有登录信息到/var/log/wtmp文件中,使用last命令可查看历史 SSH 登录记录:last | grep "ssh"
该方法有助于分析异常登录行为,判断是否存在非授权连接。

优化 SSH 连接数策略
过多的无效连接会占用服务器资源,通过以下策略可有效优化连接数管理:
-
启用连接复用
SSH 连接复用(Multiplexing)允许多个会话共享同一个连接,减少重复建立连接的开销,在客户端配置文件~/.ssh/config中添加以下参数:Host * ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p ControlPersist 600ControlPersist表示连接在后台保持的时间(单位:秒),避免频繁建立和断开连接。 -
配置 KeepAlive 机制
启用 SSH KeepAlive 可防止因网络空闲导致连接断开,在服务器端配置文件/etc/ssh/sshd_config中添加:ClientAliveInterval 60 ClientAliveCountMax 3
ClientAliveInterval表示每隔 60 秒发送一次保活包,ClientAliveCountMax表示最多发送 3 次保活包后仍无响应则断开连接。 -
限制用户并发连接数
通过pam_limits模块可限制用户的最大并发 SSH 连接数,编辑/etc/security/limits.conf文件,添加以下内容:* hard maxlogins 5
该配置限制所有用户最多同时建立 5 个 SSH 连接,可根据实际需求调整数值。
限制 SSH 连接数的安全措施
为防止暴力破解和资源滥用,需对 SSH 连接数进行严格限制:
-
修改默认 SSH 端口
默认情况下,SSH 服务运行在 22 端口,易受攻击,修改/etc/ssh/sshd_config中的Port参数为非默认端口(如 2222),并重启 SSH 服务:
systemctl restart sshd
确保防火墙开放新端口。
-
使用防火墙限制连接频率
通过iptables或firewalld限制单个 IP 的 SSH 连接频率,使用iptables限制每分钟最多 5 次连接:iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j DROP
该规则可有效防止暴力破解攻击。
-
禁用 root 直接登录
在/etc/ssh/sshd_config中设置PermitRootLogin no,禁止 root 用户通过 SSH 直接登录,必须通过普通用户登录后再切换至 root,降低安全风险。
常见问题与解决方案
-
连接数过多导致服务器卡顿
原因:大量 SSH 连接占用系统资源,尤其是文件描述符耗尽。
解决:- 增加文件描述符限制:编辑
/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535。 - 终止无效连接:使用
pkill -u username命令强制断开指定用户的连接。
- 增加文件描述符限制:编辑
-
SSH 连接频繁断开
原因:网络不稳定或未启用 KeepAlive 机制。
解决:- 检查网络环境,确保客户端和服务器网络稳定。
- 启用 SSH KeepAlive(如第三部分所述)。
-
无法建立新连接
原因:达到最大连接数限制或防火墙规则拦截。
解决:- 检查
sshd_config中的MaxStartups参数(默认 10:30:100,表示最多 10 个连接,超过 30% 概率拒绝),适当调整限制。 - 检查防火墙日志,确认是否有规则拦截,并调整策略。
- 检查
Linux SSH 连接数管理是系统运维的基础工作,需结合查看、优化和安全限制等多方面措施,通过合理配置连接复用、KeepAlive 机制,结合防火墙和用户权限控制,既能提升服务器资源利用率,又能有效防范安全威胁,在实际操作中,应根据业务需求灵活调整策略,并定期监控连接状态,确保服务器安全稳定运行。
















