一段时间内每个用户通过 SSH 传输的数据量

Jav*_*ani 8 ssh ssh-tunneling bandwidth traffic-shaping

我有一个 Ubuntu 服务器,大约有 20 个用户,主要将其用于 SSH 隧道。

我想知道是否有任何方法可以确定每个用户在特定时间段(例如过去一周或一个月)传输的数据量。

Z0O*_*0OM 6

一个好问题,我找到了一个视图答案:

\n
    \n
  1. 如何测量SSH连接的带宽

    \n
    \n
    iftop -i "$iface" -nPf "tcp and port $sport and port $dport"\n
    Run Code Online (Sandbox Code Playgroud)\n

    ssh 连接的数据包将在哪个$iface接口上发送/接收,以及$sport/$dport源和目标 TCP 端口。您还可以通过指定源 IP 地址和目标 IP 地址来进一步细化过滤器。

    \n
    \n
  2. \n
  3. SSH 通常使用多少数据?

    \n
    \n

    您应该运行tcpdump -ni eth0 -w dump port 22以捕获所有数据包,然后tcpdump -nX -r dump查看它们。

    \n
    \n
  4. \n
  5. 有没有办法跟踪每个用户的 SSH 流量(带宽使用情况)?

    \n
    \n

    我会使用 iptables 所有者模块(可能与其他\n配额/报告模块一起使用)。

    \n
    iptables -A OUTPUT -p tcp --dport 22 -m owner --uid someuser -j ACCEPT\n
    Run Code Online (Sandbox Code Playgroud)\n

    然后查看输出iptables -vL以查看通过此规则的数据包/字节数,或使用某些分析器解析 iptables 统计信息。

    \n
    \n
  6. \n
\n

要跟踪特定时间段内的数据,您可能需要定期重置统计信息并定期(例如每周或每月)收集数据。

\n

将输出重定向iptables -vL到文件以进行分析。

\n
iptables -vL > ssh_traffic.txt\n
Run Code Online (Sandbox Code Playgroud)\n

重置统计数据:

\n

iptables -Z重置跟踪 SSH 流量的规则的统计信息iptables

\n

iptables(8) - Linux 手册页

\n

您还可以编写bash script并使用cron或运行它anacron,以按所需的时间间隔自动执行脚本以收集和分析流量。

\n\n

还有另一种选择iptables将,conntrack和一起使用connmark,但您必须自己看看。

\n\n