端口映射其實就是將其中一臺網絡設備(一個路由器、一臺電腦或服務器)的某一個端口轉換到另外一個網絡設備上,其其實是NAT地址轉換的一種。
linux下的ssh連結命令實現的端口轉發功能,在講解端口轉發前咱們先了解下ssh命令的參數:html
-f 後臺認證用戶/密碼,一般和-N連用,不用登陸到遠程主機;mysql
-p 被登陸的ssd服務器的sshd服務端口;linux
-L 本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口。工做原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 端口,一旦這個端口上有了鏈接, 該鏈接就通過安全通道轉發出去, 同時遠程主機和 host 的 hostport 端口創建鏈接。能夠在配置文件中指定端口的轉發. 只有 root 才能轉發特權端口;sql
-R 遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口. 工做原理是這樣的, 遠程主機上分配了一個 socket 偵聽 port 端口,
一旦這個端口上有了鏈接, 該鏈接就通過安全通道轉向出去, 同時本地主機和 host 的 hostport 端口創建鏈接.
能夠在配置文件中指定端口的轉發. 只有用 root 登陸遠程主機才能轉發特權端口。瀏覽器
-D指定一個本地機器 「動態的'’ 應用程序端口轉發.工做原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了鏈接, 該鏈接就通過安全通道轉發出去,根據應用程序的協議能夠判斷出遠程主機將和哪裏鏈接. 目前支持 SOCKS4 協議, 將充當 SOCKS4 服務器. 只有 root才能轉發特權端口. 能夠在配置文件中指定動態端口的轉發。
-C壓縮數據傳輸。
-N不執行腳本或命令,一般與-f連用。
-g容許遠程主機鏈接到創建的轉發的端口,若是不加這個參數,只容許本地主機創建鏈接。安全
注:linux下的命令和參數是嚴格區分大小寫的。服務器
例:
從某主機的 80 端口開啓到本地主機 8080 端口的隧道
ssh -N -L8080:localhost:80 遠程主機
如今你能夠直接在瀏覽器中輸入http://localhost:8080 訪問這個網站。網絡
常常用到的三個轉發命令是:ssh
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_port user@Tunnel_Host
基於安全的考慮,MySQL服務器的 3306 端口只能內部訪問,防火牆對外只開了 ssh 端口。 這種狀況咱們就可使用 SSH 的隧道外部直接訪問 MySQL 。socket
ssh -p22 -CNg -L 3307:rds1r2cp34235345236.mysql.rds.aliyuncs.com:3306 root@localhost 密碼爲ssh root用戶密碼
而後再Windows客戶端鏈接該服務器 ip,端口即映射的3307, aliyun-mysql的用戶,密碼便可