![测量 Linux 上 ssh 服务器端连接的每个用户使用的带宽](https://linux22.com/image/583648/%E6%B5%8B%E9%87%8F%20Linux%20%E4%B8%8A%20ssh%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E8%BF%9E%E6%8E%A5%E7%9A%84%E6%AF%8F%E4%B8%AA%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E7%9A%84%E5%B8%A6%E5%AE%BD.png)
我希望能够测量每个用户通过其入站 ssh 连接进入 Linux 系统所使用的带宽。
我使用 iptables 和用户匹配来测量大多数其他流量,但入站 ssh 套接字似乎归 root 所有,所以我不能在这里使用该方法。
答案1
遗憾的是,我认为您将要自寻死路。套接字归 root 所有...因为 sshd 以 root 身份运行。用户在用户验证后才建立...但由于连接从未关闭,套接字仍归 root 所有。除了事后尝试在套接字 ID 和当前用户之间进行某种反向匹配...我不知道您将如何实现这一点。我曾看到直接进入 openssh src 的自定义黑客程序,它们添加了一定程度的流量会计...但它们高度特定于版本,我怀疑您永远不会看到一个进入标准存储库。
我找到了一个事后记账的黑客式例子。我怀疑它的可靠性和准确性……但总比没有好。基本上,它依赖于您的 auth.log 报告用户的连接状态。(即连接/断开连接)并tail
持续运行。不幸的是,tail 的更新间隔至少为 1-2 秒……并且在监控 auth.log 时存在误差范围。(尤其是在日志轮换期间)
http://newspaint.wordpress.com/2011/08/02/ssh-traffic-accounting-on-linux/