天天看點

基于linux的ssh端口轉發

基于linux的Ssh端口轉發

SSH 端口轉發能夠提供兩大功能:

加密 SSH Client(用戶端) 端至 SSH Server(服務端)之間的通訊資料

突破防火牆的限制完成一些之前無法建立的 TCP 連接配接

基于linux的ssh端口轉發

工作原理:

外部主機A想要連接配接到内部主機C上,由于内部防火牆政策,主機A和主機C不能直接連接配接,這時可以利用主機B作為跳闆機,先實作主機A和主機B的連接配接,再去連接配接主機C,這時主機C以為是主機B要和他建立連接配接,實際是主機A與主機C的連接配接。

應用場景:

當主機A是通過telnet對主機C進行通路的話,實際上是不安全的,telnet協定沒有加密,通過網絡是可以被截獲的,這時我們可以用ssh協定在主機A和主機B建立一個ssh隧道,這樣telnet被包含在ssh協定中,比較安全

實作指令:

在主機A上:(本地轉發)

ssh  -L  9527:telnetsrv:23  -fN  sshsrv

telnet 127.0.0.1 9527

-f 背景啟用

-N 不打開遠端shell,處于等待狀态

-g 啟用網關功

Telnetsrv:目标主機C上的iPv4位址

9527:指定主機A上的端口(沒被占用的情況下)

23:目标主機C對應的telnet端口

-fN:在主機A上實作背景執行,不占用目前終端,并且不登入主機B處于等待狀态。

sshsrv:跳闆機B的ipv4位址

當通路本機的9527的端口時,被加密後轉發到sshsrv的ssh服務,再解密被轉發到telnetsrv:23

data à localhost:9527 à localhost:XXXXX àsshsrv:22 à sshsrv:YYYYY à telnetsrv:

資料的流動:

先在本機A指定的9527端口,生成一個随機端口作為ssh client用戶端去連接配接ssh server服務端B機器的22端口,然後B機器随機生成一個端口作為telnet client用戶端去連接配接telnet server服務端C機器23端口

遠端轉發:

基于linux的ssh端口轉發

和本地轉發不同的是,防火牆政策不再允許外部網絡連接配接到内部網絡了,那麼我們就讓主機B作為ssh client去連接配接主機A 那麼主機A就成了ssh 伺服器,這樣把通道建立起來,後面步驟就和本地轉發一緻了。

實作指令:(在主機B上)

ssh -R 9527:telnetsrv:23 -fN sshsrv

讓sshsrv偵聽9527端口的通路,如有通路,就加密後通過ssh服務轉發請求到本機ssh用戶端,再由本機解密後轉發到telnetsrv:23

Data    sshsrv:9527         sshsrv:22         localhost:XXXXX         localhost:YYYYY             telnetsrv:23

資料的流動:先到主機A上的9527端口,由主機A上的ssh對應的22端口發出,到達ssh用戶端本機B上的随意端口,本機B再随意生成一個端口作為telnet用戶端去連接配接telnet服務端的23端口

動态端口轉發:

基于linux的ssh端口轉發

都稱google是邪惡的網站,是以中國禁止我們通路google的網站,就是因為中國防火牆政策,但是并不是禁止所有的外國網站,是以我們就可以實作×××通路,道理和遠端轉發相似,

如圖,我們先和rhel5建立ssh連接配接,然後由rhel5轉發通路centos7,這裡rhel5充當的就是ssh server

ssh  -D 1080  root@sshserver

在linux虛拟機上實作的話,還要配置下浏覽器,代理為127.0.0.1 端口1080. 然後就可以通路了。

基于linux的ssh端口轉發
基于linux的ssh端口轉發
基于linux的ssh端口轉發

實驗步驟及圖解:(本地轉發)

分别準備centos5,centos6,centos7作為實驗機。

Centos5 ip位址:192.168.109.164

Centos6 ip位址:192.168.109.138

Centos7 ip位址:192.168.109.167

Centos7上把centos5的IP位址寫入到防火牆政策裡,模拟端口轉發需要的場景,Centos6作為跳闆機。

iptables -A INPUT -s 192.168.109.164 -j REJECT

基于linux的ssh端口轉發

Centos5與centos6之間建立ssh隧道

ssh  -L  9527:192.168.109.167:23  -fN  192.168.109.138

基于linux的ssh端口轉發

在cento6機器上核對一下連接配接資訊

基于linux的ssh端口轉發

隧道建立完成,然後我們就可以實作本地端口轉發了

基于linux的ssh端口轉發

實驗步驟及圖解:(遠端轉發)

與本地轉發實驗環境相同,變化就是ssh的用戶端與服務端對調了(由于防護牆政策不再允許外部網路進入,但是内部還是可以出去的。)

建立隧道實作指令:(在主機B上)

驗證連接配接關系:

ssh用戶端(centos6)

基于linux的ssh端口轉發

ssh服務端(centos5)

基于linux的ssh端口轉發

實作通訊:

基于linux的ssh端口轉發

繼續閱讀