SSH 隧道端口转发完整教程

SSH 隧道(SSH Tunneling)是一种通过加密的 SSH 连接转发网络流量的技术。它可以将本地端口映射到远程服务器,或者将远程端口映射到本地,从而安全地访问远程服务。在搬瓦工 VPS 上,SSH 隧道常用于安全访问数据库、管理面板,以及穿透防火墙限制。本教程将详细讲解三种 SSH 转发方式。

一、SSH 隧道类型概览

  • 本地转发(-L):将本地端口的流量转发到远程服务器可达的目标地址。
  • 远程转发(-R):将远程服务器端口的流量转发到本地可达的目标地址。
  • 动态转发(-D):在本地创建 SOCKS 代理,所有流量通过 SSH 隧道转发。

二、本地端口转发(-L)

本地转发的典型场景是:你想访问搬瓦工 VPS 上仅监听 127.0.0.1 的服务(如 MySQL、Redis)。

2.1 基本语法

ssh -L 本地端口:目标地址:目标端口 用户名@VPS地址

2.2 实际示例

# 访问远程 MySQL(仅监听 localhost:3306)
ssh -L 3306:127.0.0.1:3306 root@your-vps-ip

# 现在可以用本地工具连接 localhost:3306 访问远程 MySQL

# 访问远程 Redis
ssh -L 6379:127.0.0.1:6379 root@your-vps-ip

# 访问远程 Web 管理面板
ssh -L 8080:127.0.0.1:8080 root@your-vps-ip
# 浏览器打开 http://localhost:8080

# 通过 VPS 访问内网其他机器
ssh -L 5432:192.168.1.100:5432 root@your-vps-ip
# 通过 VPS 跳转访问内网的 PostgreSQL

2.3 后台运行

# -f 后台运行,-N 不执行远程命令
ssh -f -N -L 3306:127.0.0.1:3306 root@your-vps-ip

# 查找后台 SSH 隧道进程
ps aux | grep "ssh -f"

# 终止隧道
kill $(pgrep -f "ssh -f -N -L 3306")

三、远程端口转发(-R)

远程转发将 VPS 上的端口流量导回本地。典型场景是:让外网通过 VPS 访问你本地开发中的 Web 应用。

3.1 基本语法

ssh -R 远程端口:本地地址:本地端口 用户名@VPS地址

3.2 实际示例

# 将 VPS 的 8080 端口转发到本地的 3000 端口
ssh -R 8080:127.0.0.1:3000 root@your-vps-ip
# 访问 http://your-vps-ip:8080 即可看到本地应用

# 后台运行
ssh -f -N -R 8080:127.0.0.1:3000 root@your-vps-ip

3.3 配置允许外部访问

默认情况下远程转发只监听 VPS 的 localhost。要允许外部访问,需要修改 SSH 配置:

# 编辑 VPS 上的 SSH 配置
vi /etc/ssh/sshd_config

# 添加或修改以下行
GatewayPorts yes

# 重启 SSH 服务
systemctl restart sshd

然后使用绑定地址:

ssh -R 0.0.0.0:8080:127.0.0.1:3000 root@your-vps-ip

四、动态端口转发(-D)

动态转发在本地创建一个 SOCKS5 代理服务器,所有流量通过 SSH 隧道加密传输。

4.1 基本用法

# 创建 SOCKS5 代理
ssh -D 1080 root@your-vps-ip

# 后台运行
ssh -f -N -D 1080 root@your-vps-ip

# 使用代理(命令行工具)
curl --socks5 127.0.0.1:1080 https://example.com

# 使用代理(环境变量)
export ALL_PROXY=socks5://127.0.0.1:1080
curl https://example.com

五、跳板机(ProxyJump)

当目标服务器不能直接访问时,可以通过中间的搬瓦工 VPS 作为跳板:

5.1 命令行方式

# 通过跳板机连接目标服务器
ssh -J root@jump-vps-ip root@target-server-ip

# 多级跳转
ssh -J root@jump1-ip,root@jump2-ip root@target-ip

5.2 SSH Config 配置

# 编辑 ~/.ssh/config
Host jump-server
    HostName your-vps-ip
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa

Host internal-server
    HostName 192.168.1.100
    User admin
    ProxyJump jump-server

Host db-server
    HostName 192.168.1.200
    User root
    ProxyJump jump-server
    LocalForward 3306 127.0.0.1:3306

配置完成后可以直接使用别名连接:

ssh internal-server
ssh db-server

六、SSH 隧道保活与自动重连

6.1 SSH 配置保活

# 编辑 ~/.ssh/config(客户端)
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
    TCPKeepAlive yes

6.2 使用 autossh 自动重连

# 安装 autossh
apt install autossh -y

# 使用 autossh 建立自动重连的隧道
autossh -M 20000 -f -N -L 3306:127.0.0.1:3306 root@your-vps-ip

# -M 20000:监控端口,用于检测连接是否存活

6.3 使用 Systemd 管理隧道

# 创建 Systemd 服务文件
cat > /etc/systemd/system/ssh-tunnel.service <<EOF
[Unit]
Description=SSH Tunnel to VPS
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/autossh -M 0 -N -o "ServerAliveInterval=60" -o "ServerAliveCountMax=3" -L 3306:127.0.0.1:3306 root@your-vps-ip
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# 启动并设置开机自启
systemctl daemon-reload
systemctl enable ssh-tunnel
systemctl start ssh-tunnel
systemctl status ssh-tunnel

七、安全注意事项

  • 使用密钥认证:隧道场景中建议使用 SSH 密钥而非密码,既安全又方便自动化。
  • 限制转发权限:在 sshd_config 中使用 AllowTcpForwarding 控制谁可以建立隧道。
  • 绑定地址:本地转发默认绑定 127.0.0.1,避免不必要地绑定 0.0.0.0。
  • 防火墙配置:远程转发端口需要在 VPS 防火墙中放行。
# 只允许特定用户使用隧道(VPS 上配置)
# /etc/ssh/sshd_config
Match User tunnel-user
    AllowTcpForwarding yes
    X11Forwarding no
    PermitTTY no
    ForceCommand /bin/false

八、常见问题排查

# 隧道端口被占用
ss -tlnp | grep 3306
# 更换本地端口即可

# 连接超时
ssh -v -L 3306:127.0.0.1:3306 root@your-vps-ip
# -v 显示详细调试信息

# 远程转发不生效
# 检查 sshd_config 中 GatewayPorts 设置
grep GatewayPorts /etc/ssh/sshd_config

# 权限被拒绝(1024 以下端口需要 root)
ssh -L 80:127.0.0.1:80 root@your-vps-ip
# 改用高端口如 8080

总结

SSH 隧道是搬瓦工 VPS 运维中非常实用的技术,能够安全地穿透网络边界访问各种服务。本地转发用于访问远程服务,远程转发用于暴露本地服务,动态转发用于创建 SOCKS 代理。配合 autossh 和 Systemd 可以实现隧道的持久化运行。建议同时参考 VPS 基础管理教程了解更多 SSH 使用技巧。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。