Ssh
如何獲得反向隧道IP
我使用命令創建了從伺服器到端點的反向隧道:
ssh -R 127.0.0.1:4000:localhost:81 user@server.domain
隧道是在端點端創建的,它從伺服器埠 4000 到端點埠 81。有一個服務正在偵聽此埠,但這並不重要。我這樣做是因為 Endpoint 在 NAT 後面,我需要從外部訪問它。
我想知道我是否可以在Server端獲取Endpoint的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 可以跳轉,因此這可能不是最終位置。