使用SSH隧道突破內網對映埠

目的 : 在外部網路的主機上 ( 219.136.123.122 ) ,連線到遠端區域網 ( 192.168.100.23 ) 內沒有埠對映主機 ( 下稱內服 )的 SSH 上 .

需求 : 一臺同時能被內服和外部網路的主機訪問,並且建立ssh隧道的外網伺服器 ( 下稱外服 ) .

外網主機 -> 外服 < - 萬惡的路由器 <- 內服 對於懶人們…直接提供一部到位的方案. 運行這些命令 :
內服執行 : ssh -N -f -R 遠端埠:127.0.0.1:22 外服使用者@外服地址
執行後將需求登陸,進行登陸。
若未提示錯誤,便可以通過登陸到外服,然後輸入 ssh localhost -p 遠端埠 .
例如在外服 ssh -N -f -R 2222:127.0.0.1:22 someone@whatever.com 後就在外部網路能通過 ssh whatever.com -p 2222 來訪問內網主機了.
就這樣 , 不多說 .

原理
參數解釋 :
-N : 將本地機的某個埠轉發到遠端指定機器的指定埠. 其原理很簡單,在本地機器上分配一個 socket 偵聽制定埠, 當此埠接受連線之後, 就會同過安全通道轉發出去, 同時遠端主機和 host 的 hostport 埠建立連線.
-f : 執行後臺驗證,即在一次登陸成功之後便後臺運行.
-R : 即將將遠端主機的某個埠轉發到本地端指定機器的指定埠,也就相當於在遠端主機使用了-N參數.
只有 -N -R 連用時,才能正常建立連線,否則將無法接收遠端主機資料或向遠端主機發送資料.

4 關於 “使用SSH隧道突破內網對映埠” 的評論

  1. Shou Ya

    諾這個是SSH反向連線吧~ 用於從外網訪問內網的。當時我試過用這種方法在外網訪問學校內網伺服器。

    如果只是用SSH隧道的話好像不用這麼麻煩?直接ssh -D 7070 user@host 就可以了不是?

    回覆

發佈回覆給「Shou Ya」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *