想通過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...