You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计SSH ControlMaster连接数?排查SSH连接缓慢问题

统计到远程服务器的SSH连接数(含ControlMaster复用连接)的可靠方法

一、统计TCP层面的活跃SSH物理连接

这部分能得到实际建立的TCP连接数量(ControlMaster复用的是同一个物理连接,所以这里的计数就是主连接的数量)

  • 用ss命令(比netstat更轻量高效):

    ss -tn state established '( dport = :22 or sport = :22 )' | grep <远程服务器IP> | wc -l
    

    说明:-tn仅显示TCP连接且不解析主机名,state established过滤已建立的连接,再筛选目标为远程服务器22端口的连接,最后统计行数得到连接数。

  • 若习惯用netstat:

    netstat -tn | grep ESTABLISHED | grep <远程服务器IP> | grep -E ':22\s' | wc -l
    

二、统计ControlMaster复用的会话数

ControlMaster通过UNIX套接字实现连接复用,需要结合套接字和进程信息统计:

  1. 先确认SSH配置中的控制套接字路径,一般在~/.ssh/config里:

    grep -E 'ControlPath|ControlMaster' ~/.ssh/config
    

    常见配置示例:

    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h:%p
    
  2. 统计当前存活的主连接套接字数量:

    ls -l ~/.ssh/sockets/ | grep -v total | wc -l
    

    这个数字应和前面TCP连接数一致,每个套接字对应一个存活的主连接。

  3. 查看单个主连接下的复用会话数:
    针对具体套接字,用lsof查看关联进程:

    lsof -U ~/.ssh/sockets/<用户名>@<远程服务器IP>:22 | wc -l
    

    结果减1即为该主连接下的复用会话数(减1是因为主连接进程本身会被统计在内)。

  4. 验证主连接是否正常存活:

    ssh -O check <远程用户>@<远程服务器IP>
    

    返回Master running (pid XXXX)则表示该主连接正常,可被复用。

三、统计总SSH会话数(含复用)

如果要统计所有发起的SSH会话(包括主连接和复用会话),直接查看相关SSH进程即可:

ps aux | grep ssh | grep -v grep | grep <远程服务器IP> | wc -l

这个计数包含了主连接进程和所有复用的会话进程,能直观反映当前到目标服务器的SSH会话总数。

内容的提问来源于stack exchange,提问作者fakedrake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:56:18