端口转发

SSH端口转发

SSH 端口隧道主要分为本地端口转发、远程端口转发和动态端口转发。

本地端口转发

通过SSH端口转发,可以将不出网服务通过SSH隧道映射到本地端口。

核心逻辑:将本地端口的请求转发到远程服务器,再由远程服务器转发到目标地址和端口。

1
ssh -L [本地端口]:[目标地址]:[目标端口] [远程服务器用户名]@[远程服务器IP] -p [远程SSH端口]

假设你想在本地通过 8888 端口访问远程服务器(IP:192.168.1.100)的 3306 端口(MySQL):

1
ssh -fN -L 8888:127.0.0.1:3306 root@192.168.1.100 -p 22

远程端口转发

通过SSH端口转发,可以在远程服务器上访问本地服务。

核心逻辑:将远程服务器端口的请求转发到本地,再由本地转发到目标地址和端口。

1
ssh -R [远程端口]:[本地地址]:[本地端口] [远程服务器用户名]@[远程服务器IP] -p [远程SSH端口]

假如让远程服务器(192.168.1.100)的 9999 端口转发到本地的 8080 端口(本地 Web 服务)。

1
ssh -fN -R 9999:127.0.0.1:8080 root@192.168.1.100 -p 22

动态端口转发

需要通过远程服务器作为代理,访问任意目标地址(比如科上学网、访问远程内网多台机器)。

1
ssh -D [本地SOCKS端口] [远程服务器用户名]@[远程服务器IP] -p [远程SSH端口]

比如在本地 1080 端口创建 SOCKS 代理,所有走该代理的请求都通过远程服务器转发。

ssh -fN -D 1080 root@192.168.1.100 -p 22
updatedupdated2026-02-052026-02-05