Linux實用技巧--隧道


    平時開發過程中,可能會遇到一些網絡問題,比如npm install 一些依賴包。本地電腦是可以,沒有問題。但是測試環境服務器,由於公司內部網絡安全限制,不可以隨意訪問外部網絡。因此下載一個依賴包就變得很麻煩,需要你提網絡訪問權限,講清楚原因。當然,你可以搭建一個私服,每天去同步npm包到你私有服務器。

 

   這里介紹一個小竅門,linux 隧道命令。

   介紹這個命令之前,需要有一個前提,那就是 本地環境能訪問你的測試服務器。也就是說,你本地,到你部署的服務器網絡至少單向是通路的。

   現在我們開始建一個隧道,來實現  測試服務器,通過本地服務器作為跳板,訪問外部的npm 或者其他服務器。

 

  1、輸入如下命令(以mac OS為例)

ssh -R 8888:127.0.0.1:9999 root@10.x.x.x

1. ssh -R 固定用法,R 表示 Right(明白這個以后,你可以推算ssh -L的用法)
2. 第一個8888 表示監聽10.x.x.x這個地址的8888端口
3. 第二個127.0.0.1:9999 表示本地127.0.0.1的9999端口作為跳板
4. root@10.x.x.x 表示用root用戶登錄你的測試服務器

 輸入上述命令后,系統要提示你輸入 10.x.x.x的root用戶密碼。密碼驗證通過后,第一步隧道建立成功。

 

2、本地的9999端口要有服務占用才行。這里我用charles 抓包工具,監聽本地9999端口。否則,本地9999都沒有啟用,沒法作為跳板的。

 

3、charles 要做相應的配置修改,也就是本場景下只做純轉發,不做https 抓包處理。(charles抓包的時候,會攔截數據包,https數據解密,然后用自己的證書處理后再轉發出去。

   那么再npm 安裝的時候發現該https的證書不是可信任的,而是charles自己的證書的時候,會引發一些問題)。

   如下圖,我直接不勾選 Enable SSL Proxying,簡單粗暴。

 

 

 4、在你測試服務器需要執行npm install 的地方,設置代理。剛才我們啟動的測試服務器的8888端口。那么這個時候,所有的npm install 的請求都應該交給8888 端口去發起請求。

 

export http_proxy=http://127.0.0.1:8888
export https_proxy=http://127.0.0.1:8888

  

繼續設置代理的操作只在當前會話下有效,你關掉該ssh連接后,export 代理設置失效。

 

經過上述步驟,就可以在內網的測試環境,以本地環境作為跳板,訪問一些開源的網絡。

當然,這個只是一個臨時解決方案,最重要的還是要跟公司的網絡組協商,申請開通網絡權限。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM