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

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

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

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

答案1

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

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

    iftop -i "$iface" -nPf "tcp and port $sport and port $dport"
    

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

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

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

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

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

    iptables -A OUTPUT -p tcp --dport 22 -m owner --uid someuser -j ACCEPT
    

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

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

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

iptables -vL > ssh_traffic.txt

重置统计数据:

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

iptables(8) - Linux 手册页

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

还有另一种选择一起使用iptables,conntrackconnmark,但你必须自己看看。

相关内容