我很想知道什么时候 SSH 进入我的 boxen 以创建反向隧道。目前我正在使用一个大 hack - 只是 lsof
用几行脚本。所以我的目标是查看套接字何时调用 bind() ,理想情况下,获取它绑定(bind)到的端口(它在本地监听,因为它是反向隧道)和我将连接到的远程主机。我的lsof
hack 基本上没问题,除了我没有收到即时通知而且它相当...... hacky :)
这对文件来说很容易;一旦一个文件做了几乎任何事情,inotify 就可以在 Linux 中告诉我。当然,其他操作系统也有类似的能力。
我正在考虑简单地跟踪 SSHD 日志并解析输出,但我的小“隧道监视器”守护程序需要能够在任何时间点找出隧道的状态,即使它还没有运行 SSHD 的全部时间。
我也有一个非常邪恶的 hack,我一直在考虑。这是一个在 /usr/sbin/sshd
上调用 GDB 的脚本, 然后在 bind
上设置断点.然后它使用选项 -d -p <listening port>
运行它-- 为这些隧道运行单独的 SSHD 没问题。然后它等待该断点被击中,并使用 GDB 的输入来获取远程主机的 IP 地址和 SSH 现在正在监听的本地 IP。同样,这是文本解析并打开了一些其他问题。
有没有“好的”方法来做到这一点?
最佳答案
我会使用 SystemTap 解决这样的问题。您可以使用它来探测内核以查看系统上的任何进程何时完成绑定(bind)。 http://sourceware.org/systemtap/
关于linux - 当套接字绑定(bind)时通知我,就像 inotify 对文件所做的那样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795081/