Answers:
我已使用此网页上的补丁(稍作改动)http://blog.rootshell.be/2009/03/01/keep-an-eye-on-ssh-forwarding/来记录ssh端口转发。
我在这里问一个问题,SSH主机进程如何才能检测到客户端(-R而不是-L)转发了哪些端口,以找到一种更优雅的方式来执行此操作。
但是,由于它看起来没有更好的方法,因此我使用lsof
:
sudo lsof -aPni@127.0.0.1 -Fn -p99999 | grep "^n" | grep -v '\->' | awk -F: '{print $NF}' | sort | uniq
99999是sshd
处理您感兴趣的连接的PID 。
有几种方法可以利用此片段。可能需要一个长时间运行的过程来监视的新实例,sshd
然后使用上述命令进行内部检查,或者为所有.ssh/authorized_keys
条目添加一个自定义命令(执行此操作),将其记录在某个地方,然后exec
输入原始预期命令(SSH_ORIGINAL_COMMAND
或在大多数情况下使用登录shell)情况)。
您可以尝试Wireshark。老实说,我不确定它是否会专门执行您想要的操作,但是它肯定可以确定用户在网络上正在做什么。Spiceworks是另一个免费选项
netstat
,ps
以及一些巧妙的裁剪和处理方法。Netstat可以为您提供程序ID,而ps可以为您提供用户。
user@myhome:~$ ssh user@some.server -R 12345:other.server:22
同时在控制台的另一侧
root@some.server# netstat -plnt | grep 12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN 12998/15
tcp6 0 0 ::1:12345 :::* LISTEN 12998/15
^ PID!
当然,您不会知道grep中指定的端口,grep在这里限制了我的输出
和
ps -aux | grep 12998 # the PID
user 12998 0.0 0.1 6624 1920 ? S 07:57 0:00 sshd: user@pts/15
等等!您知道用户“用户”正在使用sshd重定向端口12345
使用此脚本和cron