Repository Wiki
genshen/wssocks-plugin-ustb

远程桌面与 VS Code Remote SSH

本页说明如何借助 wssocks-client 提供的本地 SOCKS5 监听,以及 SSH 的 ProxyCommand 和本地端口转发,访问校内 Linux/Windows 资源,并将同一套链路用于 VS Code Remote SSH。

Purpose and Scope

本页聚焦两类使用场景:

  • 使用 VS Code Remote-SSH 通过 SOCKS5 代理连接远程 Linux 主机;
  • 使用 SSH -L 本地端口转发,把远程 Windows Server 的 RDP 端口映射到本机。

页面覆盖客户端启动前提、本地 SOCKS5 地址、macOS/Linux 与 Windows 的代理命令差异、SSH 配置、RDP 访问路径以及已知限制。wssocks-client 的完整 GUI 字段说明和 VPN 登录配置请参阅相邻的客户端使用文档;普通 SSH 连接的最小命令也保留在 SSH 连接校内服务器 中。

Overview

wssocks-client 启动后,在本机监听一个 SOCKS5 地址;文档中的默认示例是 127.0.0.1:1080。SSH 本身并不直接理解 wssocks 的 WebSocket/VPN 链路,因此通过 OpenSSH 的 ProxyCommand 将 SSH 目标连接交给 SOCKS5 客户端:

  • macOS/Linux 使用 nc -x 127.0.0.1:1080 %h %p;
  • Windows Git Bash 使用 connect -S 127.0.0.1:1080 %h %p。

VS Code Remote-SSH 最终复用用户 SSH 配置,因此关键不在 VS Code 中单独配置代理,而是在 SSH config 中为目标主机声明正确的 ProxyCommand。

远程桌面场景多一层 SSH 本地转发:本地 SSH 客户端先通过 SOCKS5 连接到可登录的 Linux 跳板机,再由该 Linux 主机访问内网 Windows Server;-L 3389:222.189.197.152:3389 将本地 127.0.0.1:3389 映射到最终 Windows Server 的 RDP 端口。

Architecture

Loading diagram...

Sources:

图中的 wssocks-client 负责建立代理入口,SSH 负责协议层连接,ssh.hpcer.dev 负责继续访问校内网络。RDP 并不是直接穿过 wssocks 的 UDP 通道;它依赖 SSH 的 TCP 本地端口转发,因此该方案绕开了客户端尚不支持 UDP 的限制。