问题背景
当你使用vscode远程到服务器进行开发的时候,想要显示图像会出现报错,时因为服务器没有GUI支持,不能直接显示图像。我在使用Mac的时候遇到了这个问题,给出解决的方案,搭建相关环境。
X11 Forwarding
- 在mac下安装X11,通过X11 forwarding转发来显示图像。链接:https://www.xquartz.org/
- 打开XQuartz,然后在Preferences(设置) -> Security选项中勾选“Allow connections from network clients”。
- 重启电脑
VSCode上配置
- 使用command + shift + P :打开emote-ssh: open configuration file
- 添加一行 ForwardX11 yes
- service ssh restart 重启服务器
一般来说,这样就可以了,使用xeyes测试一下,看是否成功。我在使用opencv显示的时候还遇到了其它问题:
- 报了一个GTK的错误,因为要使用GTK作为后端显示图像,需要下载配置
sudo apt-get install libgtk2.0-dev libgtk-3-dev
安装后,进入你下载的opencv文件夹,进入build文件重新编译:
cd /your_opencv_dir/opencv/build
cmake
make -j
sudo make install
-
出现了Invalid MIT-MAGIC-COOKIE-1 keyError: Can’t open display: localhost:10.0,属于X11转发权限的问题:
mac打开终端输入 xauth list,选择 your-mac-name/unix:0 MIT-MAGIC-COOKIE-1 some-long-hex-number。
然后再ssh -X 到服务器,在服务器上添加这个cookie
xauth add your-mac-name/unix:0 MIT-MAGIC-COOKIE-1 the-long-hex-number-from-previous-step
再断开ssh,重新使用-X连接,尝试xeyes。文章来源:https://uudwc.com/A/k9y9w -
如果很多方法都不行,可以查看一下端口号。 echo $DISPLAY,有时候可能因为你的神奇操作会让端口号错误,甚至可以换一个端口号试试(啥方法都不中用的情况下)
your-mac-name/unix:0 MIT-MAGIC-COOKIE-1 some-long-hex-number
文章来源地址https://uudwc.com/A/k9y9w