SSH Tunnel (端口轉發) -- 把我的PC變成「幕後boss」

指路牌

  • SSH Tunnel
  • 端口轉發

網上有帖子提到SSH Tunnel與端口轉發是不一樣的,這裏我沒有深刻研究兩個名詞的具體區別,從結果上來講,我是被SSH Tunnel這個名詞引到這個知識點的,但實現的效果很像「端口轉發」,姑且都寫上吧。windows

適用場景

但願在本身電腦本地啓動服務,讓Internet發向服務器的請求轉向本身的電腦,從而使調試更便利。bash

該debug模式只有特殊情境:如強制須要固定IP等纔會用到,並不具備廣泛性。 網上大多教程是將端口映射到局域網內某設備上,應該都出出自運維向從業者的,做爲開發者本blog簡化場景就是將服務器的端口映射到本身電腦上。服務器

環境

  • Linux、windows、Mac都可

參考博客

  • 不知何緣由,參考博客被和諧了...

背景

最近因爲工做緣由,接手了一個與微信公衆號相關的項目。項目部署起來後發現功能不能徹底跑通,所以須要打斷點檢查問題到底出在了什麼地方。因爲開發涉及微信公衆平臺,其要求將ip加到白名單內,所以須要「固定IP」,又因爲項目部分模塊須要使用https,在搭建https比本地要便捷。以上兩條緣由讓我選擇使用端口映射。微信

實現

ssh -p22 -i NAME.pem -N -R 0.0.0.0:8080:127.0.0.1:8080 USER@IP
複製代碼
  • 嗯,就是這麼簡單,一條指令就能夠了.........
  • NAME.pem: pem文件,記得將執行路徑索引到pem文件下,或者寫成pem的絕對路徑。若是使用賬號密碼登陸的話,去掉-i NAME.pem, 命令輸入後會要求輸入密碼,效果相同
  • USER: 登陸服務器用戶名,如:root
  • IP: 服務器的公網IP地址

備註

  • 通常博客都會講到 -L -D,可是因爲在個人場景中,不會使用到這兩種模式,這裏不作介紹了。
  • 要從微信服務器拿取token,實際上並不必定非要使用具備固定IP的服務器,實際上將我的電腦的臨時IP加入到微信IP白名單一樣能夠拿取到token,但弊端是動態IP會變化,所以須要在IP變更時進行替換,比較麻煩。

後記

在使用端口映射時我就冒出過另一個問題,端口映射可以將服務器的某個端口接收到的服務都映射到本地電腦,但如何控制本地電腦全部發出的請求也走服務器暱?咱們都知道本地發起網絡請求時,發起請求的端口是不徹底可控的。所以即便使用了端口映射,無非是實現了一個代理人將聽到的話講述給我,但我仍是要和外來者直接對話的局面,以下圖。若是我想當一個「幕後boss」,徹底經由代理人來完成轉化呢? 網絡

咱們惟一須要作的就是讓我的電腦發起的全部請求都通過具備固定ip的雲服務器來完成,推薦工具好比「TinyProxy」,但因爲某些緣由,此處不介紹了,有興趣的讀者能夠自行查閱文檔實現。微信公衆平臺

當端口映射和TinyProxy均搭建起來後,ECS將變成咱們PC在Internet的代言人,就是實現了下圖所示的效果。本身也就變成「幕後boss」了。 運維

要獲取更多Haytham原創文章,請關注公衆號"許聚龍": ssh

個人微信公衆號
相關文章
相關標籤/搜索