天天看點

SSH三種端口轉發技術

SSH的端口轉發(port forwarding via SSH),又叫做SSH隧道(SSH tunneling) ,是一種在本地計算機和遠端計算機之間建立一個安全的連接配接,使遠端計算機還可以作為中繼服務。SSH為其他 TCP連結提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP這些 TCP 應用均能夠從中得益,避免了使用者名,密碼以及隐私資訊的明文傳輸。總的來說 SSH端口轉發能夠提供兩大功能:

1:加密 SSHClient 端至 SSHServer端之間的通訊資料。

2:突破防火牆的限制完成一些之前無法建立的 TCP 連接配接。

SSH端口轉發的三種類型:

    1、本地端口轉發:由SSH用戶端經由SSH伺服器端轉發,連接配接至目标伺服器上。

    2、遠端端口轉發:由SSH伺服器經由SSH用戶端轉發,連接配接至目标伺服器上。

    3、動态端口轉發:從各種應用經由SSH用戶端轉發,經過SSH伺服器,到達目标伺服器,不固定端口。

實驗背景介紹:

SSH三種端口轉發技術

遠端伺服器C拒絕A的連接配接,B伺服器拒絕A的不安全連結。

目的:通過A到B伺服器安全連結,通過B代A通路伺服器C。

1:本地端口轉發

示意圖:

SSH三種端口轉發技術

如圖所示,通過在客戶機和伺服器之間建立SSH安全通道,将應用程式的資料通過通道經由伺服器,連接配接到目标伺服器上。在實驗背景介紹中,A相當于用戶端,B相當于伺服器端。

實作過程:

   在用戶端操作(A):

  ssh -L local_port:remote_address:remote_port  remote_sshd_jumpserver

local_port:是指指定一個本地端口,作為連接配接sshd跳闆機的端口

remote_address:指的是要登入的遠端主機位址

remote_port:指的是要登入的遠端主機的端口

remote_sshd_jumpserver:是指開啟了sshd服務的跳闆機(相當于SSH伺服器B)

示例:

   ssh –L 9527:telnetsrv:23 -fN sshsrv    

-f背景啟用

-N不打開遠端shell,處于等待狀态

-g啟用網關功能,跟本地這台機器在同一個網段的,都可以通過這台機器進行轉發。

    telnet 127.0.0.1 9527     

通過通路本機的9527的端口時,被加密後轉發到sshsrv的ssh服務,再解密被轉發到telnetsrv:23

2:遠端端口轉發

SSH三種端口轉發技術

如圖所示,伺服器經由用戶端,遠端端口轉發與本地端口轉發中,用戶端和伺服器端的角色進行了互相的調換,在實驗背景中,A相當于伺服器端,B相當于用戶端。(注意:這裡的用戶端和伺服器端均是指相對于SSH協定的伺服器端和用戶端。)

   在跳闆機上操作(B)

   ssh-R sshserverport:remotehost:remotehostport sshserver         

sshserverport:是指ssh伺服器是打開的端口,(A機器)

remotehost:指的是要登入的遠端主機位址

remotehostport:指的是要登入的遠端主機的端口

sshserver:是指SSH伺服器端的位址(相當于A機器)

  ssh –R 9527:telnetsrv:23 –fN sshsrv    

A機器上執行:telnet 127.0.0.1 9527

讓sshsrv偵聽9527端口的通路,如有通路,就加密後通過ssh服務轉發請求到本機ssh用戶端,再由本機解密後轉發telnetsrv:23

3:動态端口轉發

當用firefox通路internet時,本機的1080端口做為代理伺服器,firefox的通路請求被轉發到sshserver上,由sshserver替之通路internet。

   在本機firefox設定代理socket proxy:127.0.0.1:1080

   在用戶端執行:

    ssh -D 1080 root@sshserver    

需要在圖形界面的浏覽器中設定服務代理,并指定1080端口為代理端口。

ssh

繼續閱讀