可以將遠端服務器一個端口remote_port綁定到本地端口port,其中-C是進行數據壓縮,-f是後台操作,只有當提示用 戶名密碼的時候才轉向前台。-N是不執行遠端命令,在只是端口轉發時這條命令很有用處。-g 是允許遠端主機連接本地轉發端口。-R表明是將遠端主機端口映射到本地端口。如果是-L,則是將本地端口映射到遠端主機端口。
ssh的三個強大的端口轉發命令:
轉發到遠端:ssh -C -f -N -g -L 本地端口:目標IP:目標端口 用戶名@目標IP
轉發到本地:ssh -C -f -N -g –R 本地端口:目標IP:目標端口 用戶名@目標IP
代碼如下:
ssh -C -f -N -g -D listen_port user@Tunnel_Host
-C:壓縮數據傳輸。
-f :後台認證用戶/密碼,通常和-N連用,不用登錄到遠程主機。
-N :不執行腳本或命令,通常與-f連用。
-g :在-L/-R/-D參數中,允許遠程主機連接到建立的轉發的端口,如果不加這個參數,只允許本地主機建立連接。
-L 本地端口:目標IP:目標端口
將 本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接, 該連接就經過安全通道轉發出去, 同時遠程主機和 host 的 hostport 端口建立連接. 可以在配置文件中指定端口的轉發. 只有 root 才能轉發特權端口. IPv6 地址用另一種格式說明: port/host/hostport
-R本地端口:目標IP:目標端口
將 遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口. 工作原理是這樣的, 遠程主機上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接, 該連接就經過安全通道轉向出去, 同時本地主機和 host 的 hostport 端口建立連接. 可以在配置文件中指定端口的轉發. 只有用 root 登錄遠程主機才能轉發特權端口. IPv6 地址用另一種格式說明: port/host/hostport
-p :被登錄的ssd服務器的sshd服務端口。
-D port
指 定一個本地機器 “動態的'’ 應用程序端口轉發. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接, 該連接就經過安全通道轉發出去, 根據應用程序的協議可以判斷出遠程主機將和哪裡連接. 目前支持 SOCKS4 協議, 將充當 SOCKS4 服務器. 只有 root 才能轉發特權端口. 可以在配置文件中指定動態端口的轉發. >
應用舉例
1.將發往本機的80端口訪問轉發到174.139.9.66的8080端口
代碼如下:
ssh -C -f -N -g -L 80:174.139.9.66:8080 [email protected]
2.講發往174.139.9.66的8080訪問轉發到本機的80端口
代碼如下:
ssh -C -f -N -g -R 80:174.139.9.66:8080 [email protected]