注意本教程也适用于 MacOS 和 Linux 哦。
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
VcXsrv 配置 🔗
下载并安装 VcXsrv
。 打开 XLauncher
,选择 Mulitiple windows,并点击下一页。选择 Start no client , 点击下一页,选择前两个。点击下一页,然后保存配置文件到本地。点击完成,X11
服务器就打开了。
X410 配置 🔗
从 Windows Store 购买
X410
并安装。打开 X410
会自动最小化运行。在任务栏找到一个类似于 X
的图标,点击打开。 一定确定勾选 LoopBack
。此时,X11
服务器就正式运行了。
3. 设置系统变量 🔗
ssh
在运行 X11
转发的时候会读取 DISPLAY
变量来获得 X11
服务器的地址。所以我们需要在系统变量中指定 DISPLAY
的值为服务器地址。有临时的和永久的两种方式:
- 临时的方法
- CMD:
- 设置:
set DISPLAY=127.0.0.1:0
- 查看:
echo %DISPLAY%
- 设置:
- Powershell
- 设置:
$env:DISPLAY="127.0.0.1:0.0"
- 查看:
echo $env:DISPLAY
- 设置:
- CMD:
- 永久的方法(powershell 和 CMD 都可以)
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 默认启用 ssh
的 X11
转发功能了。至此,我们已经可以直接在使用 VSCode 的远程功能时在 Terminal
里面打开远程 GUI 程序了。
6. 测试 VSCode 远程终端直接打开 GUI 程序 🔗
自从 Windows 内置了 ssh
以后,VSCode 的 remote 插件都使用的是内置的 ssh
访问远程服务器,所以当我们配置好了内置的 ssh
的 X11
转发功能之后,我们就可以在 VSCode 的远程终端里面访问远程服务器上的 GUI 程序了。
打开一个 VSCode 程序,远程连接到你的服务器。打开一个 Terminal, 输入: xcalc
。你应该看到一个如上图所示的计算器出现在你的眼前。
7. 关于 Linux 的使用注解 🔗
Linux 默认有 X11
服务器,所以不需要额外的软件。所以可以直接跳到 5。
8. 关于 MacOS 的使用注解 🔗
MacOS 默认是不带 X11
服务器的,所以需要另外安装: XQuartz 。下载安装并运行即可。