SSH隧道技術(shù)----端口轉(zhuǎn)發(fā)

@Author : Roger TX (425144880@qq.com)
@Link : https://github.com/paotong999

什么是SSH隧道

首先看下面的例子蝌蹂,我們所面臨的大部分情況都和它類似短荐。

  • 內(nèi)網(wǎng)的機器A,公網(wǎng)的機器B,某服務(wù)器C
  • A可以連接B,B可以連接C,但是AC之間不能連接
  • 這個時候如果B能運行一個OpenSSH服務(wù)器嗅虏,那么就可以通過B形成隧道連接AC

跳轉(zhuǎn)機的端口轉(zhuǎn)發(fā)服務(wù)

我們建立ssh隧道的時候,往往是想通過一臺公網(wǎng)的主機或者是大家都可以訪問的主機做跳轉(zhuǎn)機上沐,來訪問內(nèi)部或者外部不能直接訪問的機器皮服。所以一般像這種情況下,請將跳轉(zhuǎn)機中的ssh服務(wù)器中的GatewayPorts設(shè)為yes

ssh是linux遠程登錄的安全協(xié)議奄容,是 C/S 模式的架構(gòu)冰更,配置文件分為服務(wù)器端配置文件 [/etc/ssh/sshd_config] 與客戶端配置文件默認配置文件[/etc/ssh/ssh_config] 用戶配置文件[~/.ssh/config]产徊。sshd_config 是服務(wù)端主配置文件這個文件的宿主應(yīng)當是root昂勒,權(quán)限最大可以是"644"

關(guān)于sshd_config配置詳解,這里不會過多涉及舟铜,有興趣的同學(xué)可以自行查找材料戈盈,這里主要說下GatewayPorts
GatewayPorts

1、是否允許遠程主機連接本地的轉(zhuǎn)發(fā)端口谆刨。默認值是"no"塘娶。
2、sshd(8) 默認將遠程端口轉(zhuǎn)發(fā)綁定到loopback地址痊夭。這樣將阻止其它遠程主機連接到轉(zhuǎn)發(fā)端口刁岸。
3、GatewayPorts 指令可以讓 sshd 將遠程端口轉(zhuǎn)發(fā)綁定到非loopback地址她我,這樣就可以允許遠程主機連接了虹曙。
4、"no"表示僅允許本地連接番舆,"yes"表示強制將遠程端口轉(zhuǎn)發(fā)綁定到統(tǒng)配地址(wildcard address)酝碳,
"clientspecified"表示允許客戶端選擇將遠程端口轉(zhuǎn)發(fā)綁定到哪個地址。

修改完成之后恨狈,重啟sshd服務(wù)

service sshd reload

本地SSH隧道

在建立本地SSH隧道之前要清楚下面幾個參數(shù):

  • 公網(wǎng)機器B的IP地址(這里是192.168.199.16)
  • 公網(wǎng)機器B的端口號(這里是3333)
  • 某服務(wù)器C的IP地址(這里是139.199.0.37)
  • 某服務(wù)器C的端口號(端口:22)

在清楚了上面的參數(shù)后疏哗,我們使用下面的命令來建立一個遠程SSH隧道,在192.168.199.16的主機上執(zhí)行下面的命令:

ssh -Nf -L 192.168.199.16:3333:139.199.0.37:22 192.168.199.16

這里我們用到了SSH客戶端的三個參數(shù)禾怠,下面我們一一做出解釋:

  • -N 告訴SSH客戶端返奉,這個連接不需要執(zhí)行任何命令。僅僅做端口轉(zhuǎn)發(fā)
  • -f 告訴SSH客戶端在后臺運行
  • -L 做本地映射端口吗氏,被冒號分割的三個部分含義分別是最后一個參數(shù)是我們用來建立隧道的中間機器的IP地址(IP: 192.168.199.16)
    • 需要使用的本地端口號(端口: 3333)
    • 需要訪問的目標機器IP地址(IP: 139.199.0.37)
    • 需要訪問的目標機器端口(端口: 22)

那么本地局域網(wǎng)的任何機器訪問192.168.199.16:3333都會自動被映射到139.199.0.37:22芽偏。

遠程SSH隧道

內(nèi)網(wǎng)的機器A,公網(wǎng)的機器B牲证,某服務(wù)器C
A可以連接B哮针,B可以連接C,但是AC之間不能連接
這個時候如果B能運行一個OpenSSH服務(wù)器,那么就可以通過B形成隧道連接AC

1十厢、上述例子中A-B-C連通后等太,我們思考一個問題,如果C想通過B連接A蛮放,也就是C-B-A可以連接嗎缩抡?
2、也許你已經(jīng)注意到了包颁,A是內(nèi)網(wǎng)機器瞻想,所以C-B-A這個方向的連接不通。
3娩嚼、雖然D-B-A這個方向的連接不通蘑险,但是A-B-D這個方向的連接是沒有問題的。
4岳悟、我們可以使用遠程SSH隧道的功能利用一條已經(jīng)連接好的A-B-D方向的連接來完成 D-B-A方向的訪問佃迄。

與本地SSH一樣,我們在建立遠程SSH隧道之前要清楚下面幾個參數(shù):

  • 公網(wǎng)機器B的IP地址(這里是139.199.0.37)
  • 公網(wǎng)機器B的端口號(這里是2222)
  • 內(nèi)網(wǎng)的機器A的IP地址(這里是192.168.199.16)
  • 內(nèi)網(wǎng)的機器A的端口號(端口:22)

在清楚了上面的參數(shù)后贵少,我們使用下面的命令來建立一個遠程SSH隧道呵俏,在192.168.199.16的主機上執(zhí)行下面的命令:

ssh -Nf -R 139.199.0.37:2222:192.168.199.16:22 139.199.0.37

1、這個命令也可以在局域網(wǎng)里192.168.199.12上執(zhí)行
2滔灶、只要在局域網(wǎng)里192.168.199.12可以直接連接內(nèi)網(wǎng)主機192.168199.16
3普碎、且192.168.199.12可以直接與公網(wǎng)主機139.199.0.37建立ssh連接
4、那么任何外網(wǎng)主機通過訪問公網(wǎng)主機139.199.0.37:2222就會被連接到192.168.199.16:22
5录平、從而可以完成外網(wǎng)穿越NAT到內(nèi)網(wǎng)的訪問麻车,而不需要在內(nèi)網(wǎng)網(wǎng)關(guān)和路由器上做任何操作。

現(xiàn)在萄涯,在IP是139.199.0.37的機器上绪氛,我們用下面的命令就可以登陸公司的IP是192.168.199.16的機器了。

ssh -p 2222 localhost

SSH隧道需要注意的地方

自動重連

? ? ? ?隧道可能因為某些原因斷開涝影,例如:機器重啟枣察,長時間沒有數(shù)據(jù)通信而被路由器切斷等等。因此我們可以用程序控制隧道的重新連接燃逻,可以使用一個簡單的循環(huán)控制隧道重新連接序目。

保持長時間連接

? ? ? ?有些路由器會把長時間沒有通信的連接斷開。SSH客戶端的TCPKeepAlive選項可以避免這個問題的發(fā)生伯襟,默認情況下它是被開啟的猿涨。如果它被關(guān)閉了,可以在ssh的命令上加上-o TCPKeepAlive=yes來開啟姆怪。
? ? ? ?另一種方法是叛赚,去掉-N參數(shù)澡绩,加入一個定期能產(chǎn)生輸出的命令。例如: vmstat俺附,下面給出一個這種方法的例子:

ssh -R 139.199.0.37:2222:192.168.199.16:22 139.199.0.37 "vmstat 30"

如何將端口綁定到外部地址上

? ? ? ?使用上面的方法肥卡,映射的端口只能綁定在127.0.0.1這個接口上。也就是說事镣,只能被本機自己訪問到步鉴。如何才能讓其他機器訪問這個端口呢?我們可以把這個 映射的端口綁定在0.0.0.0的接口上璃哟,方法是加上參數(shù)-b 0.0.0.0氛琢。同時還需要打開SSH服務(wù)器端的一個選項-GatewayPorts。默認情況下它應(yīng)當是被打開的随闪。如果被關(guān)閉的話阳似,可以在/etc /sshd_config中修改GatewayPorts no為GatewayPorts yes來打開它。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕴掏,一起剝皮案震驚了整個濱河市障般,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盛杰,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藐石,死亡現(xiàn)場離奇詭異即供,居然都是意外死亡,警方通過查閱死者的電腦和手機于微,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門逗嫡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人株依,你說我怎么就攤上這事驱证。” “怎么了恋腕?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵抹锄,是天一觀的道長。 經(jīng)常有香客問我荠藤,道長伙单,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任哈肖,我火速辦了婚禮吻育,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淤井。我一直安慰自己布疼,他們只是感情好摊趾,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著游两,像睡著了一般严就。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上器罐,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天梢为,我揣著相機與錄音,去河邊找鬼轰坊。 笑死铸董,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的肴沫。 我是一名探鬼主播粟害,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颤芬!你這毒婦竟也來了悲幅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤站蝠,失蹤者是張志新(化名)和其女友劉穎汰具,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱魔,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡留荔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了澜倦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聚蝶。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖藻治,靈堂內(nèi)的尸體忽然破棺而出碘勉,到底是詐尸還是另有隱情,我是刑警寧澤桩卵,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布验靡,位于F島的核電站,受9級特大地震影響吸占,放射性物質(zhì)發(fā)生泄漏晴叨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一矾屯、第九天 我趴在偏房一處隱蔽的房頂上張望兼蕊。 院中可真熱鬧,春花似錦件蚕、人聲如沸孙技。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牵啦。三九已至亚情,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哈雏,已是汗流浹背楞件。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留裳瘪,地道東北人土浸。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像彭羹,于是被迫代替她去往敵國和親黄伊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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

  • 名詞延伸 通俗的說拓轻,域名就相當于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你虱黄。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,607評論 2 57
  • ??本文將介紹兩種應(yīng)用場景的SSH端口轉(zhuǎn)發(fā)悦即,分別是SSH本地轉(zhuǎn)發(fā)以及SSH遠程轉(zhuǎn)發(fā)。 簡介 ??SSH(Secur...
    KingFighting閱讀 1,479評論 0 5
  • 為了消遣設(shè)計粱甫。多年之前人們在這個命題上喜歡討論咬筆頭這件事泳叠,也因此誕生了一些產(chǎn)品。 看到一個新的設(shè)計茶宵,分享一下危纫。 ...
    Cisa閱讀 245評論 0 2
  • 人人都能夠看懂瞒大,但只有1%的人會愛我的這碗粥! 我聽說過一句話 現(xiàn)在的社交媒體環(huán)境下螃征,人人都可以成為"網(wǎng)紅" 但你...
    早安就醬閱讀 1,688評論 2 1
  • 一日,和朋友在洛杉磯一家有名的咖啡廳閑坐透敌,品著咖啡盯滚。這時進來一個人踢械,坐在我們旁邊的那張桌子旁。 他叫來服務(wù)生說:“...
    六六小淘氣閱讀 429評論 0 0