從外網 SSH 進局域網,反向代理+正向代理解決方案

相信很多同學都會碰到這樣一個問題。在實驗室有一臺機器用於日常工作,當我回家了或者回宿舍之後因爲沒法進入內網,所以訪問不到了。如果這個時候我需要 SSH 進去做一下工作,那麼怎麼解決這個問題呢?本文將給出一種使用 SSH 的代理功能的解決方案。

問題描述:

https://segmentfault.com/a/1190000002718360

機器狀況

機器號IP用戶名備註
A192.168.0.Ausr_a目標服務器,在局域網中,可以訪問 A
BB.B.B.Busr_b代理服務器,在外網中,無法訪問 A
C--可以直接訪問 B,無法直接訪問 A

目標

從 C 機器使用 SSH 訪問 A

解決方案

在 A 機器上做到 B 機器的反向代理;在 B 機器上做正向代理本地端口轉發

環境需求

  • 每臺機器上都需要 SSH 客戶端

  • A、B 兩臺機器上需要 SSH 服務器端。通常是 openssh-server。

    在 Ubuntu 上安裝過程爲

    sudo apt-get install openssl-server

實施步驟

  1. 建立 A 機器到 B 機器的反向代理【A 機器上操作】

    ssh -fCNR <port_b1>:localhost:22 [email protected]

    <port_b1> 爲 B 機器上端口,用來與 A 機器上的22端口綁定。

  2. 建立 B 機器上的正向代理,用作本地轉發。做這一步是因爲綁定後的 端口只支持本地訪問【B 機器上操作】

    ssh -fCNL "*:<port_b2>:localhost:<port_b1>' localhost

    <port_b2> 爲本地轉發端口,用以和外網通信,並將數據轉發到 <port_b1>,實現可以從其他機器訪問。

    其中的*表示接受來自任意機器的訪問。

  3. 現在在 C 機器上可以通過 B 機器 ssh 到 A 機器

    ssh -p <portb2> [email protected]

至此方案完成。

附:

SSH 參數解釋

-f 後臺運行-C 允許壓縮數據-N 不執行任何命令-R 將端口綁定到遠程服務器,反向代理-L 將端口綁定到本地客戶端,正向代理

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章