因?yàn)楣ぷ餍枰侔枰丶液蠛停軌蛟L問(wèn)公司局域網(wǎng)的服務(wù)器。因此就搞了一個(gè)SSH的代理黍少。
機(jī)器 | IP | 訪問(wèn) |
---|---|---|
公司內(nèi)網(wǎng)服務(wù)器 A | 192.168.1.1 | 可以訪問(wèn)外網(wǎng) |
公網(wǎng)服務(wù)器 B | xxx.xxx.com | A可訪問(wèn)到 |
任意可以訪問(wèn)B的主機(jī) C | --- | --- |
實(shí)施步驟
- 在A上面實(shí)現(xiàn)反向代理
ssh -fCNR <port1>:localhost:22 usr_b@xxx.xxx.com
<port1>
為 B 上端口寡夹,用來(lái)與 A 機(jī)器上的22端口綁定。
- 在B上實(shí)現(xiàn)正向代理
ssh -fCNL *:<port2>:localhost:<port1> localhost
<port2>
為本地轉(zhuǎn)發(fā)端口厂置,用以和外網(wǎng)通信菩掏,并將數(shù)據(jù)轉(zhuǎn)發(fā)到 <port1>
。其中的*表示接受來(lái)自任意機(jī)器的訪問(wèn)昵济。
- 從C上訪問(wèn)A
ssh -p <port2> user_a@xxx.xxx.com
為了讓連接能夠穩(wěn)定可靠智绸,可以使用autossh在網(wǎng)絡(luò)連接斷開(kāi)時(shí)或颊,自動(dòng)重連,在A上執(zhí)行下面的語(yǔ)句:
autossh -N -f -i /home/user_a/.ssh/id_rsa -y -o BatchMode=yes -R <port2>:localhost:22 usr_b@xxx.xxx.com
為了更加保險(xiǎn)传于,在遠(yuǎn)端電腦重啟時(shí)囱挑,自動(dòng)啟動(dòng)autossh
,可以在/etc/rc.local
里面添加如下內(nèi)容:
su - user_a -c "autossh -N -f -i /home/user_a/.ssh/id_rsa -y -o BatchMode=yes -R <port2>:localhost:22 usr_b@xxx.xxx.com"
其中沼溜,user_a是A上的用戶平挑,且要求B上,已經(jīng)有了A主機(jī)上用戶user_a的公鑰系草,這里不在詳細(xì)描述通熄。
附:SSH 參數(shù)解釋
-f 后臺(tái)運(yùn)行
-C 允許壓縮數(shù)據(jù)
-N 不執(zhí)行任何命令
-R 將端口綁定到遠(yuǎn)程服務(wù)器,反向代理
-L 將端口綁定到本地客戶端找都,正向代理