其实就是被坑了,网上搜的大部分教程都是 Linux 的,虽然报错都是 Gtk-WARNING **: cannot open display:
,但实际Win 的 X11 的显示需要本地软件支持,而实际 Win 的 ssh 自身不支持 X11(ssh 自身都不支持),MobaXterm 自身集成了所以支持,putty 这种虽然有 X11 设置,但他自身并不直接支持,你需要装个 Xming 。vcxsrv
目前还没细想 Linux 的 ssh 是不是自身就支持。(不是)
powershell里跑,跑一次就行,这个是添加个人的环境变量
1 | setx DISPLAY localhost:0 |
vcxsrv 中 XLaunch 负责配置以及调用 vcxsrv(Xming 其实也差不多,不过 Xming 有个图标给你直接跑),可以把 XLaunch 生成的配置放到启动文件夹里配置开机运行
不过 vcxsrv 开机会开两个 cmd 窗口。(所以我最后又换回 xming 了)
下面是 vcxsrv 被 XLaunch 调用的启动命令(display number -1)
1 | "C:\Program Files\VcXsrv\vcxsrv.exe" -multiwindow -clipboard -wgl -ac -displayfd 444 |
注意事项
- Xming GPL 版本其实很久没维护了,最新版本应该是要付费获取
- vcxsrv 2024才开始的一个项目,不过我用的话就是感觉每次开都弹两 cmd 窗口比较蛋疼
- X11 的本地才是服务器端,远端是客户端,客户端连上服务器端在服务器端显示界面
3. 另外需要注意就是默认的 Windows 下面会一直报(上面那个环境变量要设)X11 forwarding requested but DISPLAY not set
,正常应该是 ssh 向远程请求 X11 转发,然后远程的 sshd 配置环境变量。(测试 Linux 跟 MobaXterm 都正常)
我甚至试了两个不同的远端 Linux 系统证明不是 Ubuntu 的问题
比较坑的就是手动设个 export DISPLAY=localhost:10
之后就可以了。查询 OSX 好像也有类似的问题。你可以尝试写到 .bashrc 里,我没这么做,因为没找到 root cause
可能跟兼容性有关吧。
另外测试 putty 是OK的(可以不用 Win 端加环境变量就可以用),只要勾上 Enable X11 fowarding 就可以了
今天又发现 Xming 必须用管理员权限运行,否则会不行,但印象里之前不用。(不加环境变量的话)vcxsrv 则突然没法用了(其实现在的疑问是为什么之前Linux里设环境变量就能用)