使用 Windows 自带 ssh 的 X11转发功能并配置 ssh 和 VSCode

1. 确认自带的 ssh 支持 X11 forwarding

一般来说 Windows 10 version 1809 及之后的 Windows 版本都内置了 ssh 客户端,这个客户端是带有 X11 功能的。但是,直到 ssh 客户端到 version 8.1p1 时才完整的实现了对 X11 forwarding 的支持。

打开一个命令行或者 Powershell 窗口, 输入一下指令,如果你的版本大于等于 8.1p1 , 那么恭喜你,你可以接下来的工作了。否则,请更新你的 Windows 版本。

复制代码
ssh -V
#输出: OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3

2. 下载安装 X11 server

下载下面任意软件中的一款,用于安装 X11 server

  1. VcXsrv 免费工具
  2. X410 收费工具

VcXsrv 配置

下载并安装 VcXsrv。 打开 XLauncher,选择 Mulitiple windows ,并点击下一页。选择 Start no client , 点击下一页,选择前两个。点击下一页,然后保存配置文件到本地。点击完成,X11 服务器就打开了。

X410 配置

从 Windows Store 购买 X410 并安装。打开 X410 会自动最小化运行。在任务栏找到一个类似于 X 的图标,点击打开。 一定确定勾选 LoopBack。此时,X11 服务器就正式运行了。

3. 设置系统变量

ssh 在运行 X11 转发的时候会读取 DISPLAY 变量来获得 X11 服务器的地址。所以我们需要在系统变量中指定 DISPLAY 的值为服务器地址。有临时的和永久的两种方式:

  1. 临时的方法
    1. CMD:
      1. 设置: set DISPLAY=127.0.0.1:0
      2. 查看: echo %DISPLAY%
    2. Powershell
      1. 设置: $env:DISPLAY="127.0.0.1:0.0"
      2. 查看: echo $env:DISPLAY
  2. 永久的方法(powershell 和 CMD 都可以)
    1. setx DISPLAY "127.0.0.1:0.0"

注意设置了永久的方法之后需要重启一下当前的终端才可以,比如 WindowsTerminal 需要重启。

4. 测试 X11 转发功能

既然已经安装好了 X11, 就让我们来测试一下 X11 转发功能吧。打开命令行连接你的服务器:

复制代码
ssh -XY <your_user_id>_@_<server_address>

然后在你的服务器上打开:

复制代码
xcalc

应该会出现一个计算器啦。如果没有的话,请检查你的服务器是否安装了 x11-apps

5. 更改你的 ssh 配置文件 ~/.ssh/config

使用你喜欢的编辑器打开你的配置文件 ~/.ssh/config 文件,在 HOST 下面添加如下的选项:

复制代码
Host test
    Hostname test.com
    Port 22
    User test 
    ForwardX11 yes
    ForwardX11Trusted yes

额外添加的这两行等同于 ssh-XY 选项。

现在你就可以在 MacOS、Windows、Linux 默认启用 sshX11 转发功能了。至此,我们已经可以直接在使用 VSCode 的远程功能时在 Terminal 里面打开远程 GUI 程序了。

6. 测试 VSCode 远程终端直接打开 GUI 程序

自从 Windows 内置了 ssh 以后,VSCode 的 remote 插件都使用的是内置的 ssh 访问远程服务器,所以当我们配置好了内置的 sshX11 转发功能之后,我们就可以在 VSCode 的远程终端里面访问远程服务器上的 GUI 程序了。

打开一个 VSCode 程序,远程连接到你的服务器。打开一个 Terminal, 输入: xcalc。你应该看到一个如上图所示的计算器出现在你的眼前。

7. 关于 Linux 的使用注解

Linux 默认有 X11 服务器,所以不需要额外的软件。所以可以直接跳到 5。

8. 关于 MacOS 的使用注解

MacOS 默认是不带 X11 服务器的,所以需要另外安装: XQuartz 。下载安装并运行即可。

相关推荐
TonyLee01711 分钟前
Claude Code + DeepSeek:服务器安装与使用笔记
linux·服务器·deepseek·claude code
St_rive12 分钟前
Pytest skip&&skipif跳过⽤例
运维·服务器·pytest
buhuizhiyuci24 分钟前
【Linux 篇】数字世界的水流蓄水池 —— IO 缓冲区机制深度实战解析
linux·运维·服务器·c++
贝锐27 分钟前
多校区互通、临时联网、远程运维,校园网络升级用蒲公英更省心!
运维·组网
骇客野人31 分钟前
Linux 服务器 Python 版 MCP 服务部署整体方案(适配 Claude/Cursor/自研Agent)
linux·服务器·python
游戏开发爱好者81 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone
天疆说1 小时前
04 稳定性与性能调优实录:OOM 崩溃、并发槽位、前缀缓存与 DSpark 调参
linux·运维·缓存
微硬创新1 小时前
大点数模拟量采集落地:耐达讯自动化32路0-20mA适配PROFINET总线实践解析
运维·人工智能·网络协议·自动化·信息与通信
星卯教育tony1 小时前
NOI Linux 2.0 服务器多用户网页桌面部署方案(腾讯云轻量Ubuntu20.04专属版 CSP复赛比赛环境搭建免安装虚拟机 )
linux·服务器·腾讯云
GIS数据转换器2 小时前
村镇无人机物流配送与跨域监测一体化平台
大数据·运维·人工智能·科技·无人机