大家都隻知道 ssh 可以基于密碼或密鑰登入遠端主機使用,但是你知道嗎?其實 ssh 還可以在運用在公網伺服器連接配接私有ip虛拟機,還可以實作指令行 ssh 代理。
<a target="_blank"></a>
試驗環境為兩台 centos 系統:
一台為公網伺服器 rabbit :45.xxx.xxx.212

一台為 virtualbox nat 模式下的 centos 虛拟機 centosa:10.0.2.15
nat 普遍使用在有多台主機但隻通過一個公有 ip 位址通路網際網路的私有網絡中,它允許了多台主機共享一個公用 ip 位址(即虛拟機的所有資料包最後都由網絡中那台有公網 ip 位址主機轉發出網際網路)。
首先在 nat 後面的虛拟機内建立端口轉發,通過如下指令:
<code>ssh -gfn -r <公網映射端口>:127.0.0.1:<本地端口> <目标公網></code>
指令中“ssh”參數介紹:
-g:允許遠端主機連接配接到本地建立的轉發端口
-fn:不登入不執行腳本或指令(經常連用)
-c:壓縮資料傳輸(小帶寬可用)
-r:程式級端口轉發 ,“port:host:hostport”方法(必須使用)
在我們的例子中,指令如下(處于安全的原因,隐藏了遠端公網位址):
<code># ssh -gfn -r 1111:127.0.0.1:22 45.xxx.xxx.212</code>
接着,從公網伺服器 45.xxx.xxx.212 上連接配接 nat 後面的虛拟機,輸入指令:
<code>ssh -p 1111 localhost</code>
以上從公網伺服器連接配接到虛拟機私有 ip 實驗結束,下面是運用 ssh 建立 proxy 代理。
代理proxy,也稱網絡代理,是一種特殊的網絡服務,允許一個網絡終端(一般為用戶端)通過這個服務與另一個網絡終端(一般為伺服器)進行非直接的連接配接。一些網關、路由器等網絡裝置具備網絡代理功能。一般認為代理服務有利于保障網絡終端的隐私或安全,防止攻擊。
圖解:左邊和右邊的電腦在通訊時候,需要經過中間的電腦中轉,而中間的那部電腦就是代理伺服器。
簡單的說就是 a 要通路 c,即便可以直接通路 c,但是有倆個問題:一個是安全的問題,另外還有就是“過濾問題”。
于是我們有了“代理”就是讓我們 a 連接配接 b,由 b 去通路 c,b 最後“加密”傳送給使用者,最後使用者就得到了想要的來自 c 的資訊。
本機輸入如下指令實作 ssh 代理:
<code> ssh -nnt <user>@<ip> -d <port></code>
參數介紹:
-n:背景運作
-n:不執行遠端指令
-t:不配置設定 tty ,隻做代理用
-d:指定代理端口
上述指令的意思是,在本地監聽端口 1111,将通路到該端口的流量轉發到遠端伺服器,遠端伺服器的使用者憑證由指令行指定。
至此,ssh 代理設定已經完成了。後面要用代理工具完成 ssh 代理。
這裡我們通過了代理設定,我們的浏覽器和“阿裡雲”伺服器連接配接完成~這樣我們就可以代理上網、加速上網。甚至還可以科學上網!
第一節希望讓大家靈活運用 ssh,ssh 的功能不僅僅隻是簡單的遠端連接配接部署。通過 ssh 設定,可以讓任何一台機器通過 ssh 相連接配接的!第二篇的意義在于享受遠端任何一台機器同時,還可以明白,能完成互連的 ssh。當然也可以完成代理~!
原文釋出時間為:2016-06-18
本文來自雲栖社群合作夥伴“linux中國”