kaikai
Published on 2026-01-12 / 1 Visits
0
0

SSH双向隧道,无需安装任何软件,从公司连接家里没有公网IP的电脑的远程桌面。

SSH双向隧道,无需安装任何软件,从公司连接家里没有公网IP的电脑的远程桌面。

前提:有一台公网小鸡做为跳板

该方案的逻辑是:家里向 VPS 推送流量,公司从 VPS 拉取流量。 VPS 仅作为内部转接点,不向公网暴露 RDP 端口。


第一阶段:VPS 服务端配置

在你的公网服务器上进行以下操作,确保转发功能开启且连接稳定。

  1. 编辑配置文件:sudo nano /etc/ssh/sshd_config

  2. 确认/修改以下参数

Bash

# 允许流量转发(核心)

AllowTcpForwarding yes

 

# 保持长连接(服务端主动探测客户端,防止超时掉线)

ClientAliveInterval 60

ClientAliveCountMax 3

 

# 保持默认 no(安全性最高,端口只在 VPS 内部流转)

GatewayPorts no

  1. 重启服务:sudo systemctl restart ssh


第二阶段:双向隧道指令(客户端)

请按照 “先家里,后公司” 的顺序执行以下 PowerShell/CMD 命令。

1. 家里电脑(推送端):把 3389 推到 VPS

PowerShell/CMD

ssh -o ServerAliveInterval=30 -N -R 33890:localhost:3389 root@VPS_IP

  • -o ServerAliveInterval=30: 客户端每 30 秒发一次心跳包,防止隧道因闲置断开。

  • -N: 告诉 SSH “只做转发”,不要打开远程命令提示符窗口(执行后窗口会保持空白并“卡住”,这是正常的)。

  • -R 33890:localhost:3389: 远程转发。在 VPS 上开启 33890 端口,并将发往该端口的流量转发回家里电脑的 3389。

2. 公司电脑(拉取端):把 VPS 端口拉回本地

PowerShell/CMD

ssh -o ServerAliveInterval=30 -N -L 13389:localhost:33890 root@VPS_IP

  • -L 13389:localhost:33890: 本地转发。在公司电脑开启 13389 端口,并将发往该端口的流量转发到 VPS 的 33890。


第三阶段:连接远程桌面

两边隧道都开启后,在公司电脑上:

  1. 按下 Win + R,输入 mstsc。

  2. 计算机处填写:127.0.0.1:13389

  3. 点击连接,输入家里 Windows 的账号密码。


总结:端口流转逻辑

代码段

graph LR

    A[公司 RDP 客户端] -- 访问 --> B(127.0.0.1:13389)

    B -- SSH 本地隧道 -L --> C(VPS 内部 localhost:33890)

    C -- SSH 远程隧道 -R --> D(家里电脑 localhost:3389)

    D -- 交付 --> E[Windows RDP 服务]


进阶优化:免密登录(避开每次输密码)

为了让上述脚本能一键运行,建议配置 SSH Key 免密登录:

  1. 在公司/家里电脑生成密钥:ssh-keygen -t ed25519(一路回车)。

  2. 获取公钥内容:打开 C:\Users\你的用户名\.ssh\id_ed25519.pub。

  3. 上传至 VPS:将该文件内的字符串粘贴到 VPS 的 /root/.ssh/authorized_keys 中。


Comment