理論:
1、什么是反向連接?
反向連接是指主機(jī)A(受控端)主動(dòng)連接主機(jī)B(控制端),在主機(jī)A和主機(jī)B之間建立一個(gè)遠(yuǎn)程連接,通過這個(gè)連
接主機(jī)B可以主動(dòng)的向主機(jī)A發(fā)送一些請(qǐng)求。
2、為什么需要主機(jī)A主動(dòng)去連接主機(jī)B呢?
這是因?yàn)橹鳈C(jī)A在局域網(wǎng)內(nèi),如果沒有對(duì)主機(jī)A進(jìn)行端口映射,對(duì)于主機(jī)B來說主機(jī)A是不可見的,如果在主機(jī)B這
邊向主機(jī)A發(fā)送連接請(qǐng)求,這個(gè)請(qǐng)求是不可達(dá)的。而主機(jī)B有自己獨(dú)立的IP,對(duì)于主機(jī)A來說是可見的,可以直接向
主機(jī)B請(qǐng)求連接。
3、SSH反向連接的過程
方法就是主機(jī)A主動(dòng)去連接主機(jī)B,主機(jī)B響應(yīng)主機(jī)A的連接請(qǐng)求,它們之間就建立了一個(gè)遠(yuǎn)程連接。然后主機(jī)B在
本地再創(chuàng)建一個(gè)本地連接,重定向到主機(jī)A和主機(jī)B剛才建立的遠(yuǎn)程連接上,之后對(duì)這個(gè)本地連接的操作都會(huì)反饋到
遠(yuǎn)程連接上去。整個(gè)過程類似于文件的DUP,這就在主機(jī)A和主機(jī)B之間建立了連接通道,此時(shí)對(duì)于主機(jī)B來說,主
機(jī)A已經(jīng)是可見了。
連接流程如下:
3.1、主機(jī)A ssh客戶端向主機(jī)B sshd服務(wù)端發(fā)送請(qǐng)求,建立遠(yuǎn)程連接。
3.2、主機(jī)B sshd服務(wù)端創(chuàng)建本地連接很遠(yuǎn)程連接的映射(反向連接通道)。
3.3、主機(jī)B ssh客戶端向主機(jī)B sshd服務(wù)端的連接通道發(fā)送請(qǐng)求, 建立主機(jī)B ssh和主機(jī)A sshd的連接。
完成連接后,主機(jī)A對(duì)于主機(jī)B可見的形式就是存在于主機(jī)B的那個(gè)本地連接。
4、為什么需要在主機(jī)B對(duì)遠(yuǎn)程連接映射一個(gè)本地連接?
反向連接就是CS架構(gòu),不過是受控端主動(dòng)向控制端請(qǐng)求連接,讓它們之間的連接建立。傳統(tǒng)的CS方式是可以解決
主機(jī)A和主機(jī)B之間的連接問題,但是那樣主機(jī)A和主機(jī)B的連接方式并不靈活,兩者之間能做的事情,只能是CS之際
協(xié)議規(guī)定的事情。在主機(jī)B上建立了主機(jī)A的連接映射后, 對(duì)于主機(jī)B來說主機(jī)A已經(jīng)不是局域網(wǎng)內(nèi)那臺(tái)不可見的主
機(jī),主機(jī)A已經(jīng)是存在主機(jī)B的一臺(tái)可見主機(jī),這樣就消除了局域網(wǎng)和廣域網(wǎng)的阻礙。 主機(jī)A和主機(jī)B之間建立的那
個(gè)遠(yuǎn)程連接就是主機(jī)A和主機(jī)B的通道-“網(wǎng)線”。
實(shí)例:
一.通過公網(wǎng)跳轉(zhuǎn)到內(nèi)網(wǎng)服務(wù)器(適用于只有公網(wǎng)地址,對(duì)應(yīng)服務(wù)器連接不到內(nèi)網(wǎng)服務(wù)器)
服務(wù)器A:假定為124.207.1.1
服務(wù)器B : 假定為10.3.3.188 (內(nèi)網(wǎng)服務(wù)器)
1.首先在B服務(wù)器主動(dòng)連接公網(wǎng)服務(wù)器A。(建議最好安裝autossh)
1 | autossh -M 5678 -R 1236:localhost:22 -N 服務(wù)器A用戶名@服務(wù)器A的公網(wǎng)IP &
|
此時(shí)在服務(wù)器B本地會(huì)建立5678端口,在服務(wù)器A看到有127.0.0.1:1236的端口建立
沒有autossh,可以使用如下命令
1 | ssh -f -N -R 1236:localhost:22 服務(wù)器A用戶名@服務(wù)器A的公網(wǎng)IP
|
2.在公網(wǎng)服務(wù)器A對(duì)應(yīng)用戶名下進(jìn)行連接操作,實(shí)現(xiàn)內(nèi)網(wǎng)跳轉(zhuǎn)
1 | ssh -p 1236 服務(wù)器A用戶名@localhost
|
二.在公網(wǎng)如何跳轉(zhuǎn)到內(nèi)網(wǎng)web服務(wù)(適用于只有公網(wǎng)地址,對(duì)應(yīng)服務(wù)器連接不到內(nèi)網(wǎng)服務(wù)器)
在前面的兩個(gè)基礎(chǔ)上加上第三步
3.用balance實(shí)現(xiàn)端口映射
1 | balance 15480 127.0.0.1:1236
|
4.外網(wǎng)IP訪問公網(wǎng)服務(wù)器IP和端口15480即可訪問內(nèi)網(wǎng)web服務(wù)。
本文出自 “jayson天下” 博客,請(qǐng)務(wù)必保留此出處http://jaysonzhang.blog.51cto.com/3163584/1213679