SSH(secure shell)是一種加密的網(wǎng)絡(luò)傳輸協(xié)議,可在不安全的網(wǎng)絡(luò)中為網(wǎng)絡(luò)服務(wù)提供安全的傳輸環(huán)境(這點(diǎn)很重要);SSH通過在網(wǎng)絡(luò)中創(chuàng)建安全隧道來實(shí)現(xiàn)SSH客戶端與服務(wù)器之間的連接。人們通常利用SSH來傳輸命令行界面和遠(yuǎn)程執(zhí)行命令;SSH也支持隧道協(xié)議、端口映射和X11連接。借助SFTP或SCP協(xié)議還可以傳輸文件等;閑話不說了,如需要詳細(xì)了解ssh請(qǐng)自行搜索;
我們通常接觸最多的ssh(協(xié)議)的地方就是通過xshell xmanager或linux shell中通過ssh工具登錄類unix系統(tǒng);其他的認(rèn)知可能并不太多,但沒有關(guān)系,本人也是如此,但今天我們的dba提出一個(gè)需求,需要我來協(xié)助處理;
題外話:
之前面試的時(shí)候,被問到兩個(gè)IDC的主機(jī)怎么通訊?接下的技能就能解決,只是當(dāng)時(shí)沒有細(xì)想說用,其實(shí)根本不需要,因?yàn)樗€要部署,不是很安全;接下來就見識(shí)下!
有一臺(tái)服務(wù)器是公司oracle數(shù)據(jù)庫(IDC A)為了安全只對(duì)內(nèi)網(wǎng)開放(即數(shù)據(jù)庫的私網(wǎng)ip偵聽);dba平時(shí)通過windows上xshell的forward功能,從它自己的本地127.0.0.1:port連接管理數(shù)據(jù)庫(xhell做了連接轉(zhuǎn)發(fā)),有一臺(tái)開發(fā)機(jī)器是linux(IDC B),也需要在程序中調(diào)用數(shù)據(jù)庫,需要做的就是在測(cè)試linux上也能這樣通過本地測(cè)試機(jī)調(diào)用數(shù)據(jù)庫;也就是需要ssh隧道轉(zhuǎn)發(fā)功能;即測(cè)試機(jī)通過ssh 私鑰登錄到數(shù)據(jù)庫;通過ssh端口轉(zhuǎn)發(fā)功能,把數(shù)據(jù)庫上偵聽在內(nèi)網(wǎng)的端口轉(zhuǎn)發(fā)到這臺(tái)linux測(cè)試機(jī)上的內(nèi)網(wǎng)端口;以便于linux測(cè)試程序能調(diào)用;這么說OK?
方案:
首先需要在數(shù)據(jù)庫上為測(cè)試Linux提供私鑰無密碼認(rèn)證登錄(開一個(gè)賬號(hào)用私鑰登錄);然后在測(cè)試Linux機(jī)器上進(jìn)行ssh登錄做端口轉(zhuǎn)發(fā);通過ssh登錄長連接把遠(yuǎn)程端口轉(zhuǎn)發(fā)到本地,通過本地的端口連接遠(yuǎn)程的數(shù)據(jù)端口
IDC A 數(shù)據(jù)庫服務(wù)器新增一個(gè)登錄賬號(hào)(無密碼私鑰登錄)
IDC B 測(cè)試Linux通過以下登錄 IDC A 數(shù)據(jù)庫機(jī)器
# ssh -i test -C -f -N -g -L 1521:lanip:1521 test@x.x.x.x -p port(sshd)
#說明: -i 私鑰
-C 壓縮傳輸
-f 前臺(tái)運(yùn)行
-N 不執(zhí)行遠(yuǎn)程程序
-g 允許遠(yuǎn)程端口轉(zhuǎn)發(fā)到本地
-L port:host:remote port 即將遠(yuǎn)程的port轉(zhuǎn)發(fā)映射在本地
遠(yuǎn)程某公網(wǎng)的上開放的redis 通過ssh 隧道轉(zhuǎn)發(fā)到本地,通過本地訪問redis
[san@TX_zgws_test02 ~]$ sudo netstat -ntpul
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6320 0.0.0.0:* LISTEN 25103/redis-server
....省略....
本機(jī)通過ssh登錄并轉(zhuǎn)發(fā)
涂掉的部分即這臺(tái)主機(jī)的公網(wǎng)ip和連接端口;命令執(zhí)行需要個(gè)幾秒時(shí)間不要ctrl+c
查看本地的端口
san@san-dong:~$ netstat -ntpul
(并非所有進(jìn)程都能被檢測(cè)到,所有非本用戶的進(jìn)程信息將不會(huì)顯示,如果想看到所有信息,則必須切換到 root 用戶)
激活I(lǐng)nternet連接 (僅服務(wù)器)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6320 0.0.0.0:* LISTEN 16968/ssh
訪問本地主機(jī)上的6320
通過ssh隧道轉(zhuǎn)發(fā)即可把訪問本地的6320轉(zhuǎn)發(fā)到遠(yuǎn)程的6320,遠(yuǎn)程的6320是不對(duì)外開放的;這樣就繞過了防火墻,怎么樣,是不是很強(qiáng)大?兩臺(tái)服務(wù)器之前直接通過ssh協(xié)議隧道訪問,不需要***自帶ssh加密保護(hù);get到?jīng)]有?
由于我辦公電腦是ubuntu的在公司內(nèi)網(wǎng),回家想訪問我的的這臺(tái)主機(jī)(ssh或vnc)這里就拿ssh模擬好了;如果網(wǎng)管不把我辦公電腦的22端口做映射,我在外面是不能訪問;此時(shí)就可以通過以下方式實(shí)現(xiàn);前提是你得有一個(gè)外網(wǎng)的主機(jī);具體做法就是通過辦公電腦ssh登錄到第三方的的ssh主機(jī)上并把辦公電腦上的ssh 22端口的訪問通過ssh隧道轉(zhuǎn)發(fā)到遠(yuǎn)程主機(jī)上的其他本地端口;這樣你在第三方(如果你家里有ddns能訪問)主機(jī)上訪問本地的端口即可訪問公司辦公電腦的服務(wù);
架構(gòu)如下:
格式如下:
ssh -i san -N -f -R 2222:127.0.0.1:22 san@外網(wǎng)主機(jī)(域名或公網(wǎng)ip) -p port(sshd)
參數(shù)說明:
-R: port:host:hostport 即把本地的22端口在遠(yuǎn)程主機(jī)上映成2222
實(shí)戰(zhàn):
下班前在公司電腦上執(zhí)行如下:
即通過 ssh登錄到公網(wǎng)電腦C上 并把本地的22端口映射成公網(wǎng)電腦的10022
回家后通過連接公網(wǎng)電腦C的10022 即可登錄公司辦公電腦;
[san@TX_zgws_test02 ~]$ ssh san@127.0.0.1 -p 10022
如圖:
如此這般你便可以通過公網(wǎng)的電腦C來訪問公司的辦公電腦了(如果家里是ddns可訪問的)就省了公網(wǎng)電腦C;前提是電腦支持ssh協(xié)議 ,windows下沒有試過可自行研究;
如果你覺得很贊,get到,不要走,點(diǎn)個(gè)贊唄?
補(bǔ)充:
所謂的就是在計(jì)算機(jī)中一個(gè)程序;目的就是偷偷的運(yùn)行并開放socket連接或服務(wù)端口等著別人來連接,對(duì)方想干啥就干啥只要他高興;這種方式在所有計(jì)算機(jī)都有公網(wǎng)ip(或在一個(gè)網(wǎng)段)時(shí)好用;不流行了,現(xiàn)在大部分上網(wǎng)都是通過一個(gè)公網(wǎng)ip 代理上網(wǎng)(DNAT)方式,不明白不要緊;你在公司上網(wǎng)(手機(jī)4G也是)就是這個(gè)模式,表現(xiàn)出來的就是公司所有人的出口公網(wǎng)ip都一樣;有了這咱NAT和防火墻,即使你電腦中了這種等對(duì)方來連接的,他也進(jìn)不來;因此聰明的們就想到了另一招,我進(jìn)不來,但我可以出去啊;對(duì)了大多的企業(yè)防火墻只防外面進(jìn)入企業(yè),企業(yè)內(nèi)出去一般很少限制,限制多了就是這也上不了,那也上不了,所以一般企業(yè)只禁用一些明顯有問題的協(xié)議或端口;大部分出去的端口是不做限制的;
這樣你電腦種了一個(gè)后,會(huì)主動(dòng)聯(lián)系外面的機(jī)器并做隧道映射轉(zhuǎn)發(fā),就像是上面的場(chǎng)景;于是繞過了你電腦和公司的防火墻;對(duì)方就能以這種方式又可以操縱你的電腦了;這就是所謂的反彈式,原理是不是很像?以后看到自己電腦上有未知的類似以下的連接就要小心了
sudo netstat -n |grep EST
tcp 0 0 172.16.0.188:54032 x.x.x.x:22 ESTABLISHED
上面的是我剛做的測(cè)試不怕!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。