相信很多同學(xué)都會碰到這樣一個(gè)問題。在實(shí)驗(yàn)室有一臺機(jī)器用于日常工作滓走,當(dāng)我回家了或者回宿舍之后因?yàn)闆]法進(jìn)入內(nèi)網(wǎng)垦江,所以訪問不到了。如果這個(gè)時(shí)候我需要 SSH 進(jìn)去做一下工作,那么怎么解決這個(gè)問題呢?本文將給出一種使用 SSH 的代理功能的解決方案。
問題描述:
機(jī)器號IP用戶名備注
A ?192.168.0.A usr_a目標(biāo)服務(wù)器键思,在局域網(wǎng)中,可以訪問 A
B ? B.B.B.B ? ?usr_b代理服務(wù)器吧慢,在外網(wǎng)中,無法訪問 A
C可以直接訪問 B赏表,無法直接訪問 A
目標(biāo) : ?從 C 機(jī)器使用 SSH 訪問 A
解決方案
在 A 機(jī)器上做到 B 機(jī)器的反向代理检诗;在 B 機(jī)器上做正向代理本地端口轉(zhuǎn)發(fā)
環(huán)境需求
每臺機(jī)器上都需要 SSH 客戶端
A、B 兩臺機(jī)器上需要 SSH 服務(wù)器端瓢剿。通常是 openssh-server逢慌。
在 Ubuntu 上安裝過程為
sudo apt-get install openssl-server
實(shí)施步驟
建立 A 機(jī)器到 B 機(jī)器的反向代理【A 機(jī)器上操作】
ssh-fCNR :localhost:22usr_b@B.B.B.B
為 B 機(jī)器上端口,用來與 A 機(jī)器上的22端口綁定间狂。
建立 B 機(jī)器上的正向代理攻泼,用作本地轉(zhuǎn)發(fā)。做這一步是因?yàn)榻壎ê蟮?端口只支持本地訪問【B 機(jī)器上操作】
ssh-fCNL"*::localhost:' localhost
為本地轉(zhuǎn)發(fā)端口鉴象,用以和外網(wǎng)通信忙菠,并將數(shù)據(jù)轉(zhuǎn)發(fā)到,實(shí)現(xiàn)可以從其他機(jī)器訪問纺弊。
其中的*表示接受來自任意機(jī)器的訪問牛欢。
現(xiàn)在在 C 機(jī)器上可以通過 B 機(jī)器 ssh 到 A 機(jī)器
ssh -p ?usra@B.B.B.B
至此方案完成
SSH 參數(shù)解釋
-f 后臺運(yùn)行
-C 允許壓縮數(shù)據(jù)
-N 不執(zhí)行任何命令
-R 將端口綁定到遠(yuǎn)程服務(wù)器,反向代理
-L 將端口綁定到本地客戶端俭尖,正向代理