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

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

SSH的端口轉(zhuǎn)發(fā)功能非常強(qiáng)大好用铛碑。

可是官方對(duì)SSH端口轉(zhuǎn)發(fā)功能的說(shuō)明文檔都非诚Ы悖晦澀,對(duì)一個(gè)新手非常難理解杨帽。本文以一個(gè)例子來(lái)試圖說(shuō)明這些概念。

SSH的端口轉(zhuǎn)發(fā)包括嗤军,本地端口轉(zhuǎn)發(fā)和遠(yuǎn)程端口轉(zhuǎn)發(fā)兩部分注盈。

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

在本地(運(yùn)行命令的機(jī)器上)起一個(gè)監(jiān)聽(tīng)端口,把所有對(duì)該本地端口的訪問(wèn)轉(zhuǎn)發(fā)到服務(wù)器叙赚。命令行格式為:

$ ssh -L <local-port-to-listen>:<remote-host>:<remote-port> <sshserver>

命令行中的幾個(gè)概念:

  1. <local-port-to-listen> 本地端口老客,也就是命令運(yùn)行的機(jī)器的端口。
  2. <remote-host>:<remote-port> 目標(biāo)機(jī)器和端口震叮,是真正提供服務(wù)的端口胧砰。
  3. <sshserver> ssh服務(wù)器,是提供端口轉(zhuǎn)發(fā)功能的服務(wù)器苇瓣。

這個(gè)命令的功能就是把"本地機(jī)器:<local-port-to-listen>"映射到"<remote-host>:<remote-port>"尉间,這個(gè)功能通過(guò)sshserver實(shí)現(xiàn)。

本地端口轉(zhuǎn)發(fā)通常執(zhí)行在防火墻外的機(jī)器上击罪,用來(lái)給防火墻外的其他機(jī)器訪問(wèn)防火墻內(nèi)的資源:


image.png

下面以上圖的一個(gè)例子來(lái)說(shuō)明:

  1. 假設(shè)有一個(gè)服務(wù)器在端口8080提供web服務(wù):webserver:8080哲嘲。
  2. 這臺(tái)服務(wù)器在防火墻內(nèi),不允許外面的隨意訪問(wèn)媳禁。
  3. 而有一臺(tái)代理機(jī)器proxyserver眠副,可以繞過(guò)防火墻,訪問(wèn)webserver機(jī)器竣稽。
  4. 這臺(tái)代理服務(wù)器侦啸,能提供給用戶訪問(wèn)。

這種場(chǎng)景下丧枪,我們就可以使用SSH的端口轉(zhuǎn)發(fā)功能光涂,使得用戶訪問(wèn)proxyserver的方式來(lái)訪問(wèn)webserver:

在proxyserver機(jī)器上執(zhí)行下面的命令:

$ ssh -L 30000:webserver:8080 user@sshserver

這個(gè)命令會(huì)執(zhí)行下面的功能:

    1. 在proxyserver上的ssh客戶端會(huì)建立一個(gè)加密連接到sshserver服務(wù)器。
    • 1.1. sshserver服務(wù)器提供的服務(wù)缺省監(jiān)聽(tīng)端口是22
    • 1.2. proxyserver和sshserver肯定不能是同一臺(tái)機(jī)器拧烦,否則就沒(méi)必要建立SSH通道了忘闻。
    • 1.3. sshserver和webserver可以是同一臺(tái)機(jī)器,也可以不同恋博;如果是不同那么必須保證他們之間的互通性齐佳,如果相同,webserver的地址可以使用localhost债沮,例如:
 $ ssh -L 30000:localhost:8080 user@webserver
    1. proxyserver開(kāi)啟監(jiān)聽(tīng)端口30000
    1. 在sshserver機(jī)器上炼吴,會(huì)建立一個(gè)到webserver端口8080的連接。
    1. 至此通過(guò)proxyserver和sshserver之間建立的SSH隧道疫衩,所有向sshserver端口30000的請(qǐng)求都將被轉(zhuǎn)發(fā)到webserver的端口8080硅蹦,以此用戶通過(guò)訪問(wèn) http://proxyserver:30000來(lái)訪問(wèn)http://webserver:8080的目的。

端口轉(zhuǎn)發(fā)就完成了,總結(jié)一下就是完成下面的流程:

clients <----> proxyserver <--firewall--> sshserver <----> webserver

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

和本地端口轉(zhuǎn)發(fā)的區(qū)別是:

  1. 本地端口轉(zhuǎn)發(fā)童芹,起一個(gè)監(jiān)聽(tīng)端口在本地(執(zhí)行命令的機(jī)器)涮瞻;然后轉(zhuǎn)發(fā)所有向這個(gè)新起本地端口的請(qǐng)求, 到 sshserver假褪,再到目標(biāo)機(jī)器署咽。
  2. 遠(yuǎn)程端口轉(zhuǎn)發(fā),起一個(gè)監(jiān)聽(tīng)端口在遠(yuǎn)程(sshserver機(jī)器)生音;然后轉(zhuǎn)發(fā)所有向這個(gè)新起遠(yuǎn)程端口的請(qǐng)求宁否,到本地機(jī)器(執(zhí)行命令的機(jī)器),再到目標(biāo)機(jī)器缀遍。

遠(yuǎn)程端口轉(zhuǎn)發(fā)的命令行格式和本地端口轉(zhuǎn)發(fā)一樣:

$ ssh -R <local-port-to-listen>:<remote-host>:<remote-port> <sshserver>

所不同的是端口<local-port-to-listen>是起在sshserver上家淤,而不是在運(yùn)行命令的proxyserver機(jī)器上。然后把所有對(duì)<sshserver>:<local-port-to-listen>的請(qǐng)求都轉(zhuǎn)發(fā)到<remote-host>:<remote-port>上去瑟由。

遠(yuǎn)程端口轉(zhuǎn)發(fā)通常執(zhí)行在防火墻內(nèi)的機(jī)器上絮重,用來(lái)給防火墻外的其他機(jī)器訪問(wèn)防火墻內(nèi)的資源。


image.png

還是以上面的背景為例子:
在proxyserveer機(jī)器上執(zhí)行下面的命令:

$ ssh -R 30000:webserver:8080 user@sshserver

這個(gè)命令會(huì)執(zhí)行下面的功能:

    1. 在本地proxyserver上的ssh客戶端建立一個(gè)加密連接到ssh服務(wù)器
    • 1.1 sshserver (缺省監(jiān)聽(tīng)在22端口)
    • 1.2. proxyserver和webserver可以是同一臺(tái)機(jī)器歹苦,也可以不同青伤;如果是不同那么必須保證他們之間的互通性,如果相同殴瘦,webserver的地址可以使用localhost狠角,例如:
 $ ssh -R 30000:localhost:8080 user@sshserver
    1. 在sshserver開(kāi)啟監(jiān)聽(tīng)端口30000
    1. 在proxyserver機(jī)器上,建立一個(gè)連接到webserver上蚪腋。
    1. 至此通過(guò)proxyserver和sshserver之間建立的SSH隧道丰歌,所有向sshserver端口30000的請(qǐng)求都將被轉(zhuǎn)發(fā)到webserver的端口8080,以此用戶通過(guò)訪問(wèn) http://sshserver:30000來(lái)訪問(wèn)http://webserver:8080的目的屉凯。

端口轉(zhuǎn)發(fā)就完成了立帖,總結(jié)一下就是完成下面的流程:

webserver <----> proxyserver <--firewall--> sshserver  <----> clients

注意

命令行參數(shù)中

-L|R <local-port-to-listen>:<remote-host>:<remote-port>
  1. <local-port-to-listen>

都叫本地端口,其實(shí)針對(duì)本地轉(zhuǎn)發(fā)和遠(yuǎn)程轉(zhuǎn)發(fā)是在不同的機(jī)器上:

  • 如果是本地轉(zhuǎn)發(fā)悠砚,那么端口起在執(zhí)行命令的機(jī)器上晓勇。
  • 如果是遠(yuǎn)程轉(zhuǎn)發(fā),那么端口其在sshserver的機(jī)器上灌旧。

2 <remote-host>==localhost

當(dāng)<remote-host>==localhost時(shí)绑咱,雖然都叫l(wèi)ocalhost,其實(shí)針對(duì)本地轉(zhuǎn)發(fā)和遠(yuǎn)程轉(zhuǎn)發(fā)是指不同的機(jī)器:

  • 如果是本地轉(zhuǎn)發(fā)枢泰,那么localhost指的是sshserver機(jī)器描融,也就是例子中sshserver和webserver是同一臺(tái)機(jī)器的場(chǎng)景。
  • 如果是遠(yuǎn)程轉(zhuǎn)發(fā)衡蚂,那么localhost指的是執(zhí)行命令的機(jī)器窿克,也就是例子中proxyserver和webserver是同一臺(tái)機(jī)器的場(chǎng)景骏庸。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市让歼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丽啡,老刑警劉巖谋右,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異补箍,居然都是意外死亡改执,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門坑雅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辈挂,“玉大人,你說(shuō)我怎么就攤上這事裹粤≈盏伲” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵遥诉,是天一觀的道長(zhǎng)拇泣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)矮锈,這世上最難降的妖魔是什么霉翔? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮苞笨,結(jié)果婚禮上债朵,老公的妹妹穿的比我還像新娘。我一直安慰自己瀑凝,他們只是感情好序芦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著粤咪,像睡著了一般芝加。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上射窒,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天藏杖,我揣著相機(jī)與錄音,去河邊找鬼脉顿。 笑死蝌麸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的艾疟。 我是一名探鬼主播来吩,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼敢辩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弟疆?” 一聲冷哼從身側(cè)響起戚长,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怠苔,沒(méi)想到半個(gè)月后同廉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柑司,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年迫肖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攒驰。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蟆湖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玻粪,到底是詐尸還是另有隱情隅津,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布劲室,位于F島的核電站饥瓷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏痹籍。R本人自食惡果不足惜呢铆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹲缠。 院中可真熱鬧棺克,春花似錦、人聲如沸线定。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斤讥。三九已至纱皆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芭商,已是汗流浹背派草。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铛楣,地道東北人近迁。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像簸州,于是被迫代替她去往敵國(guó)和親鉴竭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歧譬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 我的應(yīng)用場(chǎng)景是:在vps(root@159.89.206.20)上面跑了個(gè)只能在服務(wù)器本地訪問(wèn)的網(wǎng)頁(yè):127.0....
    ThomasYoungK閱讀 1,189評(píng)論 0 0
  • 實(shí)戰(zhàn) SSH 端口轉(zhuǎn)發(fā) 通過(guò)本文的介紹,讀者可以從中了解到如何應(yīng)用 SSH 端口轉(zhuǎn)發(fā)機(jī)制來(lái)解決日常工作 / 生活中...
    hopevow閱讀 1,054評(píng)論 0 9
  • 第一部分 概述當(dāng)你在咖啡館享受免費(fèi) WiFi 的時(shí)候搏存,有沒(méi)有想到可能有人正在竊取你的密碼及隱私信息瑰步?當(dāng)你發(fā)現(xiàn)實(shí)驗(yàn)室...
    fastjrun閱讀 1,149評(píng)論 0 8
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)璧眠,斷路器缩焦,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 我們相遇在初中,那是秋天蛆橡。不過(guò)我們相知確在夏天舌界,記得初中那會(huì)我們這受古惑仔的影響興這個(gè)把兄弟掘譬。 我想這...
    淼渺1030閱讀 195評(píng)論 0 0