0x01 SSH隧道
什么是SSH隧道呢?舉個例子,我們都知道称杨,SSH傳輸數(shù)據(jù)是加密傳輸?shù)拇铝ぃ梢杂行У谋WC數(shù)據(jù)的安全,但是telnet是明文傳輸?shù)奈低颍懿话踩С龋绕涫窃诠W(wǎng)上,一旦監(jiān)聽到就會有很大的危害,所以一般公司的防火墻都會禁止外網(wǎng)通過telnet連接內(nèi)網(wǎng)的計算機的区转。那么如果我們想在外面訪問公司的計算機怎么辦呢苔巨?這個時候就可以用到SSH隧道技術,可以保證數(shù)據(jù)的傳輸是加密的废离。通常我們講的ssh隧道技術其實就是ssh端口轉(zhuǎn)發(fā)侄泽。
0x02 SSH本地端口轉(zhuǎn)發(fā)
原理如下圖
建立本機獨享隧道
將本地9999端口通過192.168.10.1映射到192.168.10.2
ssh -L 9999:192.168.10.2:23 -Nf 192.168.10.1
-L 本地端口轉(zhuǎn)發(fā)
-N 不執(zhí)行命令或者腳本,否則會等待用戶的輸入
-f 后臺執(zhí)行
建立共享隧道
他人可以通過訪問我的9999端口來訪問192.168.10.2
ssh -g -L 9999:192.168.10.2:23 -Nf 192.168.10.1
0x03 SSH遠程端口轉(zhuǎn)發(fā)
那么當防火墻設置為我們從外面不能直接訪問內(nèi)部網(wǎng)絡的服務器蜻韭,但是內(nèi)部網(wǎng)絡的服務器可以訪問外面的時候悼尾,就要用到遠程端口轉(zhuǎn)發(fā)技術了。此時就要在內(nèi)網(wǎng)跳板計算機上運行命令
ssh -R 9999:192.168.10.2:23 -Nf <外部ip>
這樣外部用戶只要在自己的機器上使用
telnet 127.0.0.1:9999
就可以訪問到內(nèi)網(wǎng)192.168.10.2的telnet了肖方。
0x04 SSH動態(tài)端口轉(zhuǎn)發(fā)
舉個場景闺魏,存在遠程外網(wǎng)服務器233.233.233.233上3000端口運行這一個web1服務,4000端口運行這一個web2服務俯画,5000端口運行這一個web3服務(隨便舉的例子)析桥,然后由于防火墻策略只能用22端口連接外部網(wǎng)絡,那么如何才能訪問到那個外網(wǎng)服務器上的web服務呢艰垂?有的同學一定會說可以使用ssh本地端口轉(zhuǎn)發(fā)呀泡仗,是的,我們可以在本地運行命令
ssh -L 6666:localhost:3000 root@233.233.233.233 //訪問web1服務
ssh -L 7777:localhost:4000 root@233.233.233.233 //訪問web2服務
ssh -L 8888:localhost:5000 root@233.233.233.233 //訪問web3服務
這樣做是可以的猜憎,但是吧娩怎,不覺得很麻煩嘛,如果有10個服務要訪問呢胰柑,就要輸入10條命令截亦,那么這樣就可以使用SSH動態(tài)端口轉(zhuǎn)發(fā)功能了,只需要一條命令即可實現(xiàn)多端口訪問柬讨。這里需要用到SOCKS代理魁巩,使用命令
ssh -D localhost:2000 root@233.233.233.233
然后在瀏覽器中找到設置代理的地方,選擇SOCKS代理姐浮,選擇SOCKS5谷遂,SOCKS主機填localhost,端口填2000卖鲤,這樣我們只需要在瀏覽器中輸入localhost:3000或者localhost:4000或者localhost:5000就可以方便又快速的訪問三個web服務了肾扰。這里的原理就是我們訪問本地加端口的請求會被ssh轉(zhuǎn)發(fā)到真正的那個地址(這里就是外網(wǎng)服務器),又真正的那個地址來處理這個請求蛋逾,然后將數(shù)據(jù)發(fā)回來集晚。
0x05 聲明
這篇文章是我通過查詢資料然后根據(jù)自己的認知來寫的,其中如果有什么我說錯的地方希望能評論或者私信我区匣,不勝感激偷拔!