SSH三種端口轉發技術

SSH的端口轉發(port forwarding via SSH),又叫作SSH隧道(SSH tunneling) ,是一種在本地計算機和遠程計算機之間創建一個安全的鏈接,使遠程計算機還能夠做爲中繼服務。SSH爲其餘 TCP連接提供了一個安全的通道來進行傳輸而得名。例如,TelnetSMTPLDAP這些 TCP 應用均可以從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。總的來講 SSH端口轉發可以提供兩大功能:shell

1:加密 SSHClient 端至 SSHServer端之間的通信數據。瀏覽器

2:突破防火牆的限制完成一些以前沒法創建的 TCP 鏈接。安全

SSH端口轉發的三種類型:服務器


    一、本地端口轉發:由SSH客戶端經由SSH服務器端轉發,鏈接至目標服務器上。ssh

    二、遠程端口轉發:由SSH服務器經由SSH客戶端轉發,鏈接至目標服務器上。socket

    三、動態端口轉發:從各類應用經由SSH客戶端轉發,通過SSH服務器,到達目標服務器,不固定端口。ide

實驗背景介紹:加密

  wKioL1nZ7IiD56KIAAANwhZQ2NQ103.png

遠程服務器C拒絕A的鏈接,B服務器拒絕A的不安全連接。spa

目的:經過AB服務器安全連接,經過BA訪問服務器Cfirefox


1:本地端口轉發

示意圖:

   wKiom1nZ7P-yPVnLAABwrnuOwPc812.png

如圖所示,經過在客戶機和服務器之間創建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的端口時,被加密後轉發到sshsrvssh服務,再解密被轉發到telnetsrv:23


2:遠程端口轉發

示意圖

      wKioL1nZ7Mngi4TlAABzfOKXXR4289.png

如圖所示,服務器經由客戶端,遠程端口轉發與本地端口轉發中,客戶端和服務器端的角色進行了相互的調換,在實驗背景中,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端口爲代理端口。

相關文章
相關標籤/搜索