SSH隧道應用, 突破網絡限制

SSH隧道應用, 突破網絡限制

文章配圖: 靜安寺 攝影: 怡文圣美

文/怡文圣美

這篇文章可以幫你解決下面三個問題:

  1. 不能直連服務器, 要先登陸跳板機, 造成客戶端工具無法連接服務器.
  2. 服務器沒有公網IP, 且只允許公司IP訪問, 要在家里操作要先遠程桌面到工作機再登陸服務器, 速度很慢又不穩(wěn)定. 你有一臺公網服務器, 希望能借它牽線搭橋.
  3. 用最簡單的辦法為服務器增加代理功能.

一. SSH隧道技術

要解決本文開頭的三個問題, 最佳方案肯定是ssh隧道. 什么是ssh隧道呢? 請參考阮一峰老師寫的SSH原理與運用(二):遠程操作與端口轉發(fā).

阮一峰老師說到, ssh隧道有三種類型, 正好可以用來解決文章開頭提到的三個問題. 這三個類型是:

  1. 本地端口轉發(fā).
  2. 遠程端口轉發(fā).
  3. 綁定本地端口.

ssh隧道使用命令就可以創(chuàng)建, 工作中我們有先進的工具輔助, 可以為你省去不少麻煩, 比如你手頭肯定會有的SecureCRT, 或者XShell.

二. 使用隧道繞過跳板機

用通俗的話講, 這里的隧道在做這么一件事: 服務器A上有個程序, 監(jiān)聽3306端口, 存在一臺服務器B分別和你的工作機以及服務器A的網絡相通, 你在服務器A和服務器B上都有登陸權限, 隧道可以幫你把服務器A的3306端口映射到服務器B或者你的工作機上, 連接映射后的3306端口就等同于連接服務器A的3306端口.

工作中, 公司IT部為保證服務器安全, 工作機和服務器A之間的網絡是不通的, 需要借助充當跳板機角色的服務器B. 你需要先ssh到服務器B, 再ssh到服務器A. 這對控制臺下的一般管理還算能接受, 但對于不得不借助客戶端工具的任務就無法實施了. 所以, 使用隧道, 把服務器A的3306端口映射到本地, 客戶端工具中修改地址為localhost:3306, 客戶端工具就能正常連接服務器A了.

使用工具創(chuàng)建隧道前先確保已將服務器B的ssh公鑰上傳至服務器A, 如果不明白我說的是什么, 請參考阮一峰老師寫的SSH原理與運用(一):遠程登錄的第五節(jié): 公鑰登錄

這里以XShell為例, SecureCRT類似. 打開服務器B的連接屬性, 有一個被"特意"加粗顯示的菜單叫隧道, 右邊大紅框中展示的是已經建立的, 點擊"添加"按鈕添加新隧道.

連接屬性->隧道

類型(方向)選擇Local (Outgoing), 源主機一欄填寫你想映射到哪里, 偵聽端口填寫映射后的端口, 這里填寫localhost3306, 代表映射到本的3306端口. 目標主機為服務器A的IP, 目標端口為3306, 意思是把服務器A的3306端口映射到本地. 確定后就添加了一條映射規(guī)則, 以后只要打開這個連接, 這條映射規(guī)則就會生效.

配置隧道

查看菜單里的"隧道窗格"可以顯示當前會話所建立的隧道(轉義規(guī)則標簽)以及當前有哪些隧道正在通信(渠道標簽).

查看隧道狀態(tài)

有些客戶端工具也自帶隧道功能, 比較常見的就是各種數(shù)據庫連接工具, 如HeidiSQL, MySQL Workbench, Navicat等等

數(shù)據庫客戶端配置隧道

總結: 有了ssh隧道后, 任意被跳板機"擋住"的服務器端口都可以映射到本地或者你能直連的服務器上.

三. 使用反向隧道繞過防火墻

這里的反向隧道應用于這樣一種場景: 公司服務器A位于內網, 沒有公網IP, 只能被公司IP的電腦登陸. 你有一臺公網服務器C, 可以被家中電腦和服務器A主動連接.

利用反向隧道可以讓服務器C成為連通家中電腦和公司服務器A的橋梁. 使用反向隧道的大致步驟為:

  1. 在公司登陸服務器A, 和服務器C之間建立反向隧道,
  2. 在家里登錄服務器C,
  3. 連接反向隧道從而登陸服務器A.

可以發(fā)現(xiàn)服務器A是主動連接服務器C的, 這就順利突破了公司防火墻和沒有公網IP的限制. 這就是反向的含義.

具體的步驟是先用公司的工作機登陸服務器A執(zhí)行命令:

ssh -R 7000:localhost22 root@ServerC_IP

含義是登陸服務器C后, 將本地的22端口映射到服務器C的7000端口上. 這時候不能退出, 不能關電腦, 不能斷網絡. 待你回到家后用家中電腦登陸服務器C, 執(zhí)行:

netstat -lpn | grep 7000

會發(fā)現(xiàn)一個被打開的7000端口, 這就是隧道了. 該端口等同于服務器A的22端口, 你執(zhí)行下面命令就可以登陸服務器A了:

ssh user@localhost -p 7000

工作機上如果退出服務器C的登陸, 隧道就會被關閉, 所以這種方案也只能適合工作機可以長時間不關的人.

讀者可能會發(fā)現(xiàn)XShell的連接屬性->隧道->添加->類型(方向)下拉框中有一個選項叫Remote (Incoming), 這種類型對應的也是反向隧道. 但筆者用這種方式建立的隧道無法使用, 既沒有報錯, 也沒有成功映射端口.有知道這個選項到底干嘛用的請一定要告訴我哦 O(∩_∩)O~.

總結: 在知道反向隧道之前, 你登錄公司服務器的方法可能是先遠程桌面到工作機, 再登陸公司服務器, 這之間可能還要先登錄跳板機, 受遠程桌面和網絡質量的影響, 這樣2次跳板后到達服務器的操作感受會很糟糕. 現(xiàn)在只需要跳轉1次, 關鍵是省去了遠程桌面, 操作流暢度會大大提高.

四. 使用代理隧道搭建代理服務器

阮一峰老是在SSH原理與運用(二):遠程操作與端口轉發(fā)中說的綁定本地端口類型指的就是代理隧道, 這點可以從XShell的連接屬性->隧道->添加->類型(方向)->Dynamic (SOCKS4/5)就可以看出:

配置代理隧道

這樣的隧道建立后, localhost:8080就是代理服務器地址了, 代理的網絡環(huán)境就是會話所連接的服務器網絡.

這種隧道非常適合用來調試線上系統(tǒng). 比如采用分布式部署的應用, 從公網訪問, 均衡負載會隨機分配一臺主機響應, 想要調試指定的一臺主機怎么辦? 你可以在均衡負載機上建立代理隧道, 瀏覽器中配置均衡負載為代理服務器, 瀏覽器地址欄輸入主機的內網IP就可以訪問指定的主機了.

總結: 雖然Linux安裝ss5不難, 但在公司的服務器上安裝就不妥了. 這種基于ssh的ss5代理方式比較輕量級, 無需在服務器上安裝什么, 打開關閉很容易, 不相關人也無法使用, 簡單又安全.

完.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辐脖,死亡現(xiàn)場離奇詭異亥啦,居然都是意外死亡届吁,警方通過查閱死者的電腦和手機暂氯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厘惦,“玉大人国裳,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵霞丧,是天一觀的道長突那。 經常有香客問我务漩,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任祥楣,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己问裕,他們只是感情好巍杈,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布逆航。 她就那樣靜靜地躺著抹剩,像睡著了一般钳踊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天屁药,我揣著相機與錄音缭嫡,去河邊找鬼。 笑死评架,一個胖子當著我的面吹牛雇逞,可吹牛的內容都是我干的掉蔬。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了线召?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瑰艘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囤耳,經...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年谜疤,在試婚紗的時候發(fā)現(xiàn)自己被綠了尺棋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奴艾。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡萄传,死狀恐怖衍菱,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤匾寝,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站擒抛,受9級特大地震影響歹撒,放射性物質發(fā)生泄漏撵孤。R本人自食惡果不足惜迈着,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斧拍,春花似錦昂勉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祖秒。三九已至诞吱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竭缝,已是汗流浹背房维。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抬纸,地道東北人咙俩。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阿趁。 傳聞我的和親對象是個殘疾皇子膜蛔,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理赔蒲,服務發(fā)現(xiàn)柔吼,斷路器,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 第一部分 概述當你在咖啡館享受免費 WiFi 的時候昧甘,有沒有想到可能有人正在竊取你的密碼及隱私信息命黔?當你發(fā)現(xiàn)實驗室...
    fastjrun閱讀 1,148評論 0 8
  • 劉奶奶今年也有七八十歲了纷铣,身體卵史、思維已大不如從前,比起同齡人搜立,他老人家已經算不錯的了以躯。 近日,小周擺弄起了毛線啄踊,看...
    公號香草多姿閱讀 244評論 0 0
  • 姓名:李淑瑛 224期學員 289期志工 公司:紹興翔鷹紡織品有限公司 部門:人事行政部 【堅持日精進打卡第179...
    李淑瑛閱讀 157評論 0 0
  • 笑來老師分享了一個很有意思的案例: 戴汩颠通,愉悅資本的創(chuàng)始人址晕,他曾經有過一個招聘海報,和普通的招聘海報相比顿锰,可以說是...
    呆牛閱讀 683評論 0 0