如何获取反向隧道 IP

如何获取反向隧道 IP

我使用命令创建了从服务器到端点的反向隧道:

ssh -R 127.0.0.1:4000:localhost:81 [email protected]

隧道是在 Endpoint 端创建的,它从服务器端口 4000 通向 Endpoint 端口 81。有一个服务正在监听此端口,但这并不重要。我这样做是因为 Endpoint 位于 NAT 后面,我需要从外部访问它。

我想知道我是否可以在 Server 端获取 Endpoint 的 IP。之前有一个类似的问题:

如何找到 SSH 反向隧道的源 IP?

但我的情况比较特殊,我不想手动输入命令,因为到服务器会有很多反向隧道,而我只能使用 Endpoint 绑定到的端口。

换句话说:如何仅使用服务器端的端口 4000 获取端点端的隧道 IP?我无法找到服务器上的端口 4000 与用于隧道目的的已建立 SSH 连接之间的任何关联。

netstat -plant (在服务器上)显示:

tcp        0      0 127.0.0.1:4000          0.0.0.0:*               LISTEN      30307/sshd: user
tcp        0      0 8.8.8.8:22              1.2.3.4:44874           ESTABLISHED 12531/sshd: user
tcp        0      0 8.8.8.8:22              15.16.17.18:44258       ESTABLISHED 30203/sshd: user
tcp        0      0 8.8.8.8:22              22.22.22.22:46696       ESTABLISHED 15639/sshd: user

如您所见,有一个服务在端口 4000 上监听(此端口转发到端点端口 81 - 此处不可见)和三个 ssh 连接。其中一个服务于隧道。但我不知道哪一个。8.8.8.8 是服务器的 IP。

答案1

从 netstat 中获取 ssh 的进程 ID,

lsof -p $pid -a -d 3

将显示连接另一端的 IP。由于 ssh 可以跳跃,因此这可能不是最终位置。

相关内容