三種不同SSH隧道

2021-09-17 07:38:27 字數 2923 閱讀 2527

想通過ssh隧道連線遠端機器的vnc服務,對ssh -l命令不太熟悉,man ssh後發現3組與隧道(turnnel)相關的引數:ssh -d,ssh -l,ssh -r,一下子就搞糊塗了,所有下決心仔細研究一番。

ssh隧道有3種型別:

動態埠**

動態埠允許通過配置乙個本地埠,把通過隧道到資料**到遠端的所有位址。本地的應用程式需要使用socks協議與本地埠通訊。此時ssh充當socks**伺服器的角色。

命令格式

ssh -d [bind_address:]port

引數說明

bind_address 指定繫結的ip位址,預設情況會繫結在本地的回環位址(即127.0.0.1),如果空值或者為*會繫結本地所有的ip位址,如果希望繫結的埠僅供本機使用,可以指定為localhost。 

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執行 

$ 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埠)。 

$ ssh -r 5900:192.168.2.100:5901 [email protected]

然後主機c連線主機b的5901埠$ open vnc:

優點

可以穿越防火牆和nat裝置

缺點

每個服務都需要配置不同的埠**

如何禁止埠**

設定ssh服務配置檔案/etc/ssh/sshd_config

allowtcpforwardingno

三種不同型別的ssh隧道

ssh隧道有3種型別 動態埠 socks 本地埠 遠端埠 動態埠允許通過配置乙個本地埠,把通過隧道到資料 到遠端的所有位址。本地的應用程式需要使用socks協議與本地埠通訊。此時ssh充當socks 伺服器的角色。命令格式 ssh d bind address port引數說明使用場景假設x網路 1...

三種不同型別的ssh隧道

想通過ssh隧道連線遠端機器的vnc服務,對ssh l命令不太熟悉,man ssh後發現3組與隧道 turnnel 相關的引數 ssh d,ssh l,ssh r,一下子就搞糊塗了,所有下決心仔細研究一番。ssh隧道有3種型別 動態埠 socks 本地埠 遠端埠 動態埠允許通過配置乙個本地埠,把通過...

ssh整合三種方式(二)

建立資料庫,建立web工程,建立實體類,編寫service層和dao層的介面和實現類。具體事項 1 把sessionfactory的建立交給spring管理 2 在dao層配置使用jdbctemplate或hibernatetemplate運算元據庫,然後在spring配置檔案中配置jdbctemp...