ssh 端口轉發實現外網 80 端口映射到內網 80 端口


開發中經常需要外網服務映射到本機內網服務的需要,便於調試。

以前都是同事幫着配,這兩天自己也看了一下 ssh 端口轉發。 同事分分鍾鍾搞定的事情,自己折騰了 2 天, 真是弱爆了。

最初老想不明白一件事,為什們外網服務器能夠找到我的內網機器,現在才明白原來走的是 ssh 隧道。

需求我的內網機器  192.168.9.100, 我的阿里雲外網 123.56.86.52,  現在需要所有對 123.56.86.52  80 端口的訪問都映射到  192.168.9.100 的 80 端口。

顯然 123.56.86.52 訪問不到  192.168.9.100, 但 192.168.9.100 能訪問到 123.56.86.52 , 所以很簡單 ssh 建立一個遠程端口轉發就行了。

1  在 192.168.9.100 上執行

ssh -N -v -R 3000:127.0.0.1:80 root@123.56.86.52

-R 表示遠程轉發,  這句話的意思是 通過 ssh 連接到 123.56.86.52,讓 123.56.86.52 監聽自己的 3000 端口, 所有通過 3000 端口的數據都通過 ssh 轉發到 127.0.0.1 的 80 端口。

這里 127.0.0.1 就是 192.168.9.100 這個機器。  在  ssh 連接的時候通道就建立了, 以后所有的通信都走的是這個通道。

2 既然  123.56.86.52 已經監聽在 3000 端口了, 接下來就非常簡單了,  服務器上用 nginx 做一個反向代理, 把  80 端口代理到  3000 端口就行了

123.56.86.52 上 nginx 配置如下

location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host:80;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Via "nginx";
 }

現在外網就成功映射到了我的內網機器

看着同事們 ssh 各種打洞, 各種玩法, 只能膜拜。  ssh 功能強大,通過 ssh 可以在家里隨便訪問公司內網電腦, 在公司內網電腦也可以遠程操作家里的內網電腦。

想學好 ssh 的同學推薦一本書  SSH -The Definitive Guide, 2nd Edition.pdf ,抽空我也要好好學一下。

但最重要的還是要理論結合實際,多看多練。

 


免責聲明!

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



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