網上有帖子提到SSH Tunnel與端口轉發是不一樣的,這裏我沒有深刻研究兩個名詞的具體區別,從結果上來講,我是被SSH Tunnel這個名詞引到這個知識點的,但實現的效果很像「端口轉發」,姑且都寫上吧。windows
但願在本身電腦本地啓動服務,讓Internet發向服務器的請求轉向本身的電腦,從而使調試更便利。bash
該debug模式只有特殊情境:如強制須要固定IP等纔會用到,並不具備廣泛性。 網上大多教程是將端口映射到局域網內某設備上,應該都出出自運維向從業者的,做爲開發者本blog簡化場景就是將服務器的端口映射到本身電腦上。服務器
最近因爲工做緣由,接手了一個與微信公衆號相關的項目。項目部署起來後發現功能不能徹底跑通,所以須要打斷點檢查問題到底出在了什麼地方。因爲開發涉及微信公衆平臺,其要求將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地址
在使用端口映射時我就冒出過另一個問題,端口映射可以將服務器的某個端口接收到的服務都映射到本地電腦,但如何控制本地電腦全部發出的請求也走服務器暱?咱們都知道本地發起網絡請求時,發起請求的端口是不徹底可控的。所以即便使用了端口映射,無非是實現了一個代理人將聽到的話講述給我,但我仍是要和外來者直接對話的局面,以下圖。若是我想當一個「幕後boss」,徹底經由代理人來完成轉化呢? 網絡
咱們惟一須要作的就是讓我的電腦發起的全部請求都通過具備固定ip的雲服務器來完成,推薦工具好比「TinyProxy」,但因爲某些緣由,此處不介紹了,有興趣的讀者能夠自行查閱文檔實現。微信公衆平臺
當端口映射和TinyProxy均搭建起來後,ECS將變成咱們PC在Internet的代言人,就是實現了下圖所示的效果。本身也就變成「幕後boss」了。 運維
要獲取更多Haytham原創文章,請關注公衆號"許聚龍": ssh