SSH埠轉發 SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網路數據。但是,SSH 還能夠將其他 TCP 埠的網路數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這是因為SSH 為其他 TCP 鏈接提供了一個安全的通道 ...
SSH埠轉發
SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網路數據。但是,SSH 還能夠將其他 TCP 埠的網路數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這是因為SSH 為其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP 這些 TCP 應用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時,如果工作環境中的防火牆限制了一些網路埠的使用,但是允許 SSH 的連接,也能夠通過將 TCP 埠轉發來使用 SSH 進行通訊
SSH 埠轉發能夠提供兩大功能:
加密 SSH Client 端至 SSH Server 端之間的通訊數據
突破防火牆的限制完成一些之前無法建立的 TCP 連接
本地轉發:
-L localport:remotehost:remotehostport sshserver
選項:
-f 後臺啟用
-N 不打開遠程shell,處於等待狀態
-g 啟用網關功能
實現過程:先再A和B之間利用ssh協議連接,創建一個隧道,裡面走的是telnet,因為ssh協議是加密的,把telnet封裝在其內部,在到達內網B主機時會自動的解封裝在由B主機轉發到主機C上
從而實現了加密連接通訊
實驗步驟:①開啟本地一個埠9527,先和主機里建立一個隧道連接
②在B主機上查看連接情況,此時通道已經建立好了
③在服務端查看一下23埠是否被連接,此時沒有被任何人連接
④這時就可以使用telnet 連接本地的9527埠通過隧道的連接間接的訪問服務端了
在服務端查看一下埠連接情況:此時是被B主機連接,實際上是A主機正在訪問,下麵看一下B主機狀態
此時在主機B上查看一下埠連接情況,如圖:此時B主機有兩個角色:1、對於A主機來說它是A主機ssh的服務端 2、對於C主機telnet服務端來說它是telnet的客戶端
實驗2:ssh遠程埠轉發
遠程轉發:
主要命令: -R sshserverport:remotehost:remotehostport sshserver
因在公司里都有防火牆,規則一般都是不允許從外面主動發起請求,所以現在ssh client和server端角色互換以實現
實驗過程: 讓sshsrv偵聽9527埠的訪問,如有訪問,就加密後通過ssh服務轉發請求到本機ssh客戶端,再由本機解密後轉發到telnetsrv:23
實驗圖:
實驗步驟:①在主機B時主動發起ssh請求到A主機建立隧道的連接,連接狀態如下圖:
②此時隧道連接已經建立了,回到主機A上查看一下連接情況:
③在主機A上發起telnet請求,如圖,此時已經telnet到遠程服務端了
④在主機C服務端和主機B上查看鏈接情況
主機C:服務端,此時23埠也是被主機B連接,實際上是A主機在連接
主機B:此時也是兩種角色,一個是ssh的客戶端,另一個是telnet的客戶端
實驗3:動態埠轉發
實驗圖:
主機A(客戶端) IP:192.168.99.190
主機B(跳板機、代理機) IP:192.168.99.20
主機C(web服務端) IP:192.168.99.120
實驗過程:因防火牆的原因國內的主機不能直接訪問國外的一些網站,所以我們只能通過一些代理的伺服器,如亞馬遜雲主機等(這裡指主機B)間接的去訪問這些網站,
實驗步驟:
①為了模擬真實一些,這裡在主機C服務端配置一條防火牆策略,禁止主機A直接訪問
② A主機加策略之前是可以訪問的,再次訪問就被拒絕了
但是主機B不受影響,可以正常服務C的網頁
③在A主機開一個埠通過ssh協議連接到B主機,
在B主機查看埠連接
④ 訪問服務端: 通過建立的連接,在本機訪問9527埠即可以通過隧道連接通過代理主機B去訪問服務端(命令行使用代理訪問如下),圖形界面需要在web瀏覽器配置里設置代理伺服器的ip後再進行訪問,如圖
瀏覽器的配置:
這樣我們就可以訪問國外的一些網站了,是不是so easy呢!
以上實驗為本人實驗筆記記錄,如果有錯誤歡迎指出
如果對你有幫助的話就給小編點個贊吧 ,非常感謝!