SSH 端口轉(zhuǎn)發(fā)

SSH端口轉(zhuǎn)發(fā)分為三種情況,分別為本地端口轉(zhuǎn)發(fā),遠(yuǎn)程端口轉(zhuǎn)發(fā)以及動(dòng)態(tài)端口轉(zhuǎn)發(fā).本文只介紹前兩種.

什么是端口轉(zhuǎn)發(fā)

日常生活中,客戶端與服務(wù)器端連接(例如網(wǎng)頁(yè)瀏覽時(shí)的http連接),都是從客戶端發(fā)起時(shí),指定服務(wù)器端的地址(包括IP和端口).例如訪問(wèn)百度時(shí),瀏覽器指定服務(wù)器的地址為https://www.baidu.com. 其中www.baidu.com經(jīng)過(guò)DNS解析后可得到一個(gè)IP地址,而https協(xié)議默認(rèn)使用443端口,因此,訪問(wèn)百度時(shí),瀏覽器會(huì)發(fā)起從本地到百度服務(wù)器443端口的連接. 而端口轉(zhuǎn)發(fā)是指,客戶端訪問(wèn)另一個(gè)地址和端口,該端口會(huì)將所有到達(dá)本端口的流量全部轉(zhuǎn)發(fā)到目的地址.

SSH端口轉(zhuǎn)發(fā)

ssh端口轉(zhuǎn)發(fā)是指用ssh在本地環(huán)境和轉(zhuǎn)發(fā)環(huán)境之間建立ssh隧道,這樣不僅保證了數(shù)據(jù)傳輸安全,也能繞開(kāi)一些網(wǎng)絡(luò)防火墻等的限制.下面是ssh的man文檔說(shuō)明

man ssh

SSH本地端口轉(zhuǎn)發(fā)

使用 -L 指定本地端口轉(zhuǎn)發(fā),指令形式為

$ssh -L [bind_localhostdaddress]:localhostport:remotehost:remotehostport user@transhost

其中bind_localhostaddress為可選地址,默認(rèn)為localhost,即127.0.0.1
上面這條指令的意思為:
將發(fā)往localhostport的流量發(fā)送到transhost, 然后transhost再將收到的流量發(fā)送到remotehost:remotehostport. 這樣就實(shí)現(xiàn)了localhostport的流量轉(zhuǎn)發(fā)到remotehost:remotehostport的目的.

本地端口轉(zhuǎn)發(fā)使用場(chǎng)景

  1. 繞過(guò)IP限制
    有hostA,hostB,hostC三臺(tái)主機(jī)
目標(biāo):

hostA --訪問(wèn)--> hostC:80

現(xiàn)狀:

hostA--可以訪問(wèn)-->hostB
hostA--不可以訪問(wèn)-->hostC:80
hostB--可以訪問(wèn)-->hostC:80

解決方案

在hostA中啟用本地端口轉(zhuǎn)發(fā),將本地8080端口映射到hostC:80端口,這樣hostA訪問(wèn)本地8080端口時(shí),會(huì)自動(dòng)將流量轉(zhuǎn)發(fā)到hostC:80端口.
指令

[localuser@hostA] ssh -L 8080:hostC:80 hostBuser@hostB
  1. 繞過(guò)服務(wù)端端口限制
    有hostA,hostB兩臺(tái)主機(jī)
目標(biāo):

hostA--訪問(wèn)-->hostB:443

現(xiàn)狀:

hostA--僅可訪問(wèn)-->hostB:8888端口(同時(shí)hostB開(kāi)放22端口供遠(yuǎn)程SSH訪問(wèn))

解決方案

在hostA中啟用本地端口轉(zhuǎn)發(fā),將本地8080端口映射到hostB中的443端口,在hostB中流量路徑為 hostB:8080 --> hostB:443
指令

[localuser@hostA] ssh -L 8080:localhost:443 hostBuser@hostB

注意上面指令中的localhost.可以從流量的角度理解,此處較容易令人疑惑,分步理解如下
流量從hostA:8080經(jīng)過(guò)ssh隧道(22端口)到達(dá)hostB.
此時(shí)流量應(yīng)當(dāng)轉(zhuǎn)發(fā)至localhost:443端口,因?yàn)榱髁恳呀?jīng)到達(dá)hostB.因此,從hostB看,下一步的目的地址為localhost:443.即到達(dá)了hostB:443

[localuser@hostA] ssh -L 8000:hostB:443

SSH遠(yuǎn)程端口轉(zhuǎn)發(fā)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容