SSH隧道技術

何謂SSH隧道

隧道是一種把一種網絡協議封裝進另外一種網絡協議進行傳輸的技術。這裏我們研究ssh隧道,所以所有的網絡通訊都是加密的。又被稱作端口轉發,因爲ssh隧道通常會綁定一個本地端口,所有發向這個端口端口的數據包,都會被加密並透明地傳輸到遠端系統

SSH 參數解釋

f 後臺運行
-C 允許壓縮數據
-N 不執行任何命令

ssh隧道的類型

1.-R 將端口綁定到遠程服務器,反向代理
2.-L 將端口綁定到本地客戶端,正向代理
3.-D 動態端口轉發 (socks代理)

動態端口轉發
動態端口允許通過配置一個本地端口,把通過隧道到數據轉發到遠端的所有地址。本地的應用程序需要使用Socks協議與本地端口通訊。此時SSH充當Socks代理服務器的角色

命令格式

ssh -f -N -D IP:端口 root@localhost

參數說明

-f   後臺運行   -N   不執行任何命令    -D   動態端口轉發(socks代理)

使用場景
假設X網絡(192.168.18.0/24)有主機A(192.168.18.100),Y網絡(192.168.2.0/24)有主機B(192.168.2.100)和主機C(192.168.2.101),已知主機A可以連接主機B,但無法連接主機C。
在主機A執行
$ ssh -D localhost:8080 [email protected]
然後主機A上的應用程序就可以通過
SOCKS5 localhost:8080
訪問主機C上的服務

動態端口轉發的優缺點

優點
配置一個代理服務就可以訪問遠端機器和與其所在子網絡的所有服務
缺點
應用程序需要額外配置SOCKS代理,若應用程序不支持代理配置則無法使用

本地端口轉發
通過SSH隧道,將一個遠端機器能夠訪問到的地址和端口,映射爲一個本地的端口

命令格式
ssh -L [bind_address:]port:host:hostport
參數說明
bind_address 指定綁定的IP地址,默認情況會綁定在本地的迴環地址(即127.0.0.1),如果空值或者爲*會綁定本地所有的IP地址,如果希望綁定的端口僅供本機使用,可以指定爲localhost。
port 指定本地綁定的端口
host 指定數據包轉發目標地址的IP,如果目標主機和ssh server是同一臺主機時該參數指定爲localhost
host_port 指定數據包轉發目標端口
使用場景
假設X網絡(192.168.18.0/24)有主機A(192.168.18.100),Y網絡(192.168.2.0/24)有主機B(192.168.2.100)和主機C(192.168.2.101),已知主機A可以連接主機B,但無法連接主機C。A主機需要訪問C主機的VNC服務(5900端口)
在A主機上建立本地轉發端口5901
$ ssh -L 5901:192.168.2.101:5900 [email protected]
然後本地vnc客戶端通過5901端口打開c主機的vnc服務
$ open vnc://localhost:5901

本地端口轉發的優缺點

優點
無需設置代理
缺點
每個服務都需要配置不同的端口轉發

遠端端口轉發
遠程端口轉發用於某些單向阻隔的內網環境,比如說NAT,網絡防火牆。在NAT設備之後的內網主機可以直接訪問公網主機,但外網主機卻無法訪問內網主機的服務。如果內網主機向外網主機建立一個遠程轉發端口,就可以讓外網主機通過該端口訪問該內網主機的服務。可以把這個內網主機理解爲“內應”和“開門者”。

命令格式

  ssh -R [bind_address:]port:host:hostport

參數說明
bind_address 指定綁定的IP地址,默認情況會綁定在本地的迴環地址(即127.0.0.1),如果空值或者爲*會綁定本地所有的IP地址,如果希望綁定的端口僅供本機使用,可以指定爲localhost。
port 指定本地綁定的端口
host 指定數據包轉發源地址的IP,如果源主機和ssh server是同一臺主機時該參數指定爲localhost
host_port 指定數據包轉發源端口
使用場景
假設X網絡(192.168.18.0/24)有主機A(192.168.18.100),Y網絡(192.168.2.0/24)有主機B(192.168.2.100)和主機C(192.168.2.101),已知主機A可以通過SSH訪問登錄B主機,但反向直接連接被禁止,主機B和主機C可以相互訪問。若主機C想訪問主機A的VNC服務(5900端口)。
在主機A執行如下命令,開放B主機遠端端口轉發。
$ ssh -R 5900:192.168.2.100:5901 [email protected]
然後主機C連接主機B的5901端口

$ open vnc://192.168.2.100:5901

遠程端口轉發優缺點
優點
可以穿越防火牆和NAT設備
缺點
每個服務都需要配置不同的端口轉發
如何禁止端口轉發
設置ssh服務配置文件 /etc/ssh/sshd_config

AllowTcpForwardingno
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章