ssh隧道的玩法
本地端口转发 将本地机器的某个端口请求,通过 SSH 隧道转发到目标服务器可访问的某个 地址:端口 ssh -L [本地IP:]本地端口:目标地址:目标端口 用户名@SSH服务器地址 -p SSH
ssh隧道的玩法
发布时间:2025-12-30 (2025-12-30)

本地端口转发

将本地机器的某个端口请求,通过 SSH 隧道转发到目标服务器可访问的某个 地址:端口

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

比如,将本地 3306 端口的请求,转发到 SSH 服务器能访问的 127.0.0.1:3306(MySQL)

ssh -L 3306:127.0.0.1:3306 root@192.168.80.187 -p 22

实用参数补充

# 后台运行 + 不执行远程命令 + 自动重连
ssh -fN -L 3306:127.0.0.1:3306 root@192.168.80.187 -p 22
# -f:后台运行
# -N:不执行远程命令(仅转发端口)
# -o ServerAliveInterval=60:每60秒发心跳包,防止隧道断开
ssh -fN -o ServerAliveInterval=60 -L 3306:127.0.0.1:3306 root@192.168.80.187 -p 22

远程端口转发

将 SSH 服务器的某个端口请求,转发到本地机器可访问的某个 地址:端口

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

示例

# 将 SSH 服务器的 8080 端口请求,转发到本地的 127.0.0.1:8080(内网 Web 服务)
ssh -R 8080:127.0.0.1:8080 root@192.168.80.187

如果需要将端口绑定在远程服务器的0.0.0.0上,需要修改ssh的配置

vim /etc/ssh/sshd_config
# 允许远程端口转发绑定到所有地址(0.0.0.0)
GatewayPorts yes

systemctl restart sshd

动态端口转发

创建一个 SOCKS 代理,所有通过这个代理的请求,都会通过 SSH 隧道转发。

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

示例

# 在本地 1080 端口创建 SOCKS 代理
ssh -D 1080 root@1.2.3.4

curl指定socks

curl -x socks5://127.0.0.1:1080 http://127.0.0.1:5230 

浏览器的可以使用Zero Omega设置代理