Ssh

如何獲得反向隧道IP

  • November 2, 2018

我使用命令創建了從伺服器到端點的反向隧道:

ssh -R 127.0.0.1:4000:localhost:81 user@server.domain

隧道是在端點端創建的,它從伺服器埠 4000 到端點埠 81。有一個服務正在偵聽此埠,但這並不重要。我這樣做是因為 Endpoint 在 NAT 後面,我需要從外部訪問它。

我想知道我是否可以在Server端獲取Endpoint的IP。有一個類似的問題:

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

但我的情況是具體的。我不想手動輸入命令,因為到伺服器會有很多反向隧道,我只能使用 Endpoint 綁定的埠。

**換句話說:如何僅使用Server端的4000埠獲取Endpoint端的隧道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。

從 netstat 中獲取 ssh 的程序 id,

lsof -p $pid -a -d 3

將顯示連接另一端的 IP。由於 ssh 可以跳轉,因此這可能不是最終位置。

引用自:https://serverfault.com/questions/937228