SSH隧道
分享一篇很棒的SSH手冊(cè)中文翻譯
https://www.cnblogs.com/f-ck-need-u/archive/2017/07/05/7120669.html-N 選項(xiàng)表示登錄到遠(yuǎn)程主機(jī)后不執(zhí)行命令,只做流量轉(zhuǎn)發(fā)。
我有兩臺(tái)Linux服務(wù)器,我會(huì)演示如何創(chuàng)建SSH隧道在不同的場(chǎng)景中解決問(wèn)題。
第一臺(tái)服務(wù)器 47.107.86.165我將它稱為 A。另一臺(tái)是 120.79.52.36 我叫它 B. 我在兩臺(tái)服務(wù)器的7000端口上均運(yùn)行了一個(gè)簡(jiǎn)陋的web頁(yè)面。
一、正向隧道 (參數(shù) -L)
我想訪問(wèn) B:7000, 但不希望直接訪問(wèn),而是通過(guò)A來(lái)中轉(zhuǎn),我可以在 A 上執(zhí)行這個(gè)命令:
ssh -N -L 0.0.0.0:7070:120.79.52.36:7000 gg@120.79.52.36
這意味著訪問(wèn) A:7070 實(shí)際上是間接訪問(wèn) B:7000
二、反向隧道 (參數(shù) -R)
還是在A服務(wù)器上操作,我現(xiàn)在想讓 B 監(jiān)聽(tīng)一個(gè)端口,使得 B 訪問(wèn)該端口的時(shí)候跳轉(zhuǎn)到另一個(gè) [地址:端口],我可以在 A 上執(zhí)行這個(gè)命令:
ssh -N -R 120.79.52.36:7800:0.0.0.0:7000 gg@120.79.52.36
上面這個(gè)命令的意思是在 120.79.52.36 上監(jiān)聽(tīng) 7800,訪問(wèn)該端口會(huì)跳轉(zhuǎn)到 A 的7000端口。
用 netstat 查看 B 是不是監(jiān)聽(tīng)了 7800 端口
在 B 上訪問(wèn)本地 7800 端口,可以看到的確跳轉(zhuǎn)到了 A 的 7000 端口。
這個(gè)功能有什么有趣的用途呢?我說(shuō)一個(gè)我自己的例子。我所在的學(xué)校組了一個(gè)巨大的局域網(wǎng),宿舍插上網(wǎng)線后獲得了一個(gè)內(nèi)網(wǎng)ip,不撥號(hào)是不能上網(wǎng)的。我發(fā)現(xiàn)實(shí)驗(yàn)樓的機(jī)器可以主動(dòng)連接到我宿舍的ip,反過(guò)來(lái)我宿舍卻不能連實(shí)驗(yàn)樓。那么我可以用ssh隧道+socks5來(lái)代理上網(wǎng)了。具體做法在第四個(gè)場(chǎng)景介紹,下面先介紹如何用SSH建立socks5代理。
三、socks5代理 (參數(shù) -D)
我希望把 A 變成 socks5 服務(wù)器,通過(guò) A 訪問(wèn)網(wǎng)站,可以在 A 上執(zhí)行這個(gè)命令:
ssh -N -D 0.0.0.0:9000 root@0.0.0.0
這樣 A 就監(jiān)聽(tīng)了 9000 端口,A 成為了 socks5 服務(wù)器,在瀏覽器中設(shè)置代理后就通過(guò) A 訪問(wèn)網(wǎng)頁(yè)了。
這條命令還可以稍作修改,仍然用 A 作socks5 服務(wù)器,但是流量用另一臺(tái)機(jī)器轉(zhuǎn)發(fā)。
瀏覽器代理不用修改,仍然是 A:9000 ,打開(kāi) ip.cn 看看效果
四、反向隧道 + socks5 代理 (參數(shù) -D -R)
最后一個(gè)場(chǎng)景,結(jié)合 -D 和 -R 參數(shù),讓 A 成為 socks5 服務(wù)器,然后建立反向隧道到 B 使得 B 在本地監(jiān)聽(tīng)端口, B 通過(guò)該端口提供的 socks5 服務(wù)聯(lián)網(wǎng)。
在 A 上執(zhí)行兩條命令:
ssh -N -D 0.0.0.0:9000 root@0.0.0.0 ssh -N -R 120.79.52.36:9090:0.0.0.0:9000 gg@120.79.52.36此時(shí) B 的 9090 端口已經(jīng)成為了一個(gè) “socks5代理“。
在 B 上安裝 proxychains,設(shè)置代理后訪問(wèn) ifconfig.me
配置 proxychains(這一步也可以用之前在瀏覽器內(nèi)設(shè)置代理的方式替換)
可以看到 B 通過(guò) A 的代理訪問(wèn)了外部網(wǎng)站。
總結(jié)
- 上一篇: windows修改mac地址表
- 下一篇: autossh端口映射