Windows Terminal 使用 SSH X11 转发

什么是 X11?推荐看鸟哥的教程:http://cn.linux.vbird.org/linux_basic/0590xwindow.php

1. 安装 X11 服务器

下载并安装 VcXsrv Windows X Server:https://sourceforge.net/projects/vcxsrv/files/latest/download

2. 配置 X11 转发

安装后会在桌面生成 XLaunch 快捷方式,双击运行,一直点“下一页”,直到出现“Save configuration”按钮,然后点击它,把配置文件(config.xlaunch)保存在桌面。最后点击“完成”按钮,X Server 就会后台运行(最小化在系统托盘或者任务栏):

alt text

为了让 X Server 能开机自动运行,需要将桌面上的 config.xlaunch 文件复制到 C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 目录下:

alt text

为了能让 SSH 客户端确定 X11 服务器的地址,还需要设置环境变量 DISPLAY,参考以下命令:

1
2
3
4
5
6
7
8
9
:: 设置永久环境变量
setx DISPLAY "127.0.0.1:0.0"

:: 重启终端后查看环境变量
set | findstr DISPLAY
echo %DISPLAY%

:: 删除环境变量
setx DISPLAY ""

alt text

3. 确认效果

在 Windows Terminal 中使用 -Y 参数连接 SSH 服务器:

alt text

输入 xcalc 命令,如果弹出计算器并可点击,则说明 X11 转发配置成功:

alt text

除了 xcalc,还有其他一些小工具可以用来测试 X11 转发效果:xeyesxlogobitmap等等。可以输入 dpkg -L x11-apps | grep bin命令来查看更多可用的 X11 应用程序。如果提示 x11-apps 不存在,可以使用 sudo apt install -y x11-apps 命令来安装。

4. 优化配置

  1. 如果经常使用 X11 转发,可以将配置写入 SSH 客户端配置文件中:
1
2
3
host *
ForwardX11 yes
ForwardX11Trusted yes
  1. 切换用户后继续使用 X11 转发

X11 转发默认只对 SSH 登录上去的用户生效,后续如果切换用户,X11 转发就会失效:

alt text

为了解决这个问题,可以使用以下命令来允许某个用户使用X11转发:

1
xauth -f ~用户名/.Xauthority add $(xauth list | tail -1) 

缺点是每次SSH登陆后都需要重新执行这条命令。

5. 参考资料