ssh - 错误:无法获取 RGB、双缓冲视觉效果

ssh - 错误:无法获取 RGB、双缓冲视觉效果

我正在尝试通过 X11 转发 ssh 运行间接 GLX 程序。其中图形在 X 服务器端渲染。ssh 服务器在 Ubuntu 16.04 LTS(将称为 ubuntu)上运行,ssh 客户端在 Arch Linux(将称为 arch)上运行。

我使用 启动 arch 上的 Xserver xinit xfce4-session -- +iglx,然后使用 连接到 ubuntu ssh connor@server -Xp 23,然后运行export LIBGL_ALWAYS_INDIRECT=1并继续启动 glx 客户端。下面我尝试运行一些 glx 程序:

connor@server:~$ glxinfo
name of display: localhost:10.0
Error: couldn't find RGB GLX visual or fbconfig
connor@server:~$ glxgears
Error: couldn't get an RGB, Double-buffered visual

这些是适用于 arch 的图形设备:

[connor@archlinux ~]$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GM204M [GeForce GTX 970M] (rev a1)

在 SSH 会话中,图形设备如下:

connor@server:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)

Ubuntu 似乎对 X 连接有建议,例如运行 xterm 或 xeyes,其 sshd 配置包含:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

我曾尝试运行 X 服务器,-listen tcp同时允许使用 进行远程控制xhost +。在 ubuntu 上,改为设置DISPLAY=arch:0.0。但结果仍然相同,仍未成功。奇怪的是,通过 Xorg; VcXsrv 的 Windows 端口连接,我能够使用我认为是间接渲染的 putty 进行连接,因为在相同的硬件和连接上,在 1920p 的全屏显示上,帧速率达到了 60fps 的水平(与我之前在低分辨率下 5fps 的结果相当)。

我寻求可能的解决方案和帮助,一周多以来,我尝试了所有我能想到的方法,但结果都一样,这让我感到沮丧。我最后的办法是在 Ubuntu 服务器上安装 Arch Linux,因为这可能是某种可比性问题。

答案1

我遇到了同样的问题。我通过使用-Y而不是解决了这个问题-X。因此,命令将是:

ssh -Y user@host
$ glxgears
....

一些背景信息:当我使用 Ubuntu(作为服务器和客户端 - 18.04 天)时,使用-X对我来说工作正常。但是,当我切换到 Arch 时,它停止工作了。一些程序(如lxterminalxeyes)在 Arch 下仍然可以使用-X,但我发现glxgearsglxinfo和其他程序拒绝启动,并出现您描述的错误(Error: couldn't get an RGB, Double-buffered visual)。经过一番搜索,Arch Wiki 做了以下说明:

提示:如果 GUI 绘制效果不好或您收到错误,您可以启用 ForwardX11Trusted 选项(命令行上的 -Y 开关);这将防止 X11 转发受到 X11 SECURITY 扩展控制。如果您这样做,请确保您已阅读本节开头的警告。

Arch 维基链接:https://wiki.archlinux.org/title/OpenSSH#X11_forwarding

我试过了,它对我有用。研究安全问题(我不是这方面的专家),似乎主要问题是允许-Y窗口获得焦点、获取输入(键盘和鼠标)以及注入输入事件。我认为,如果您信任两台机器(服务器和客户端)以及通过 ssh X11 转发运行的程序,那么应该没问题。但是,我不是这方面的专家。更多信息可以在这里找到:https://security.stackexchange.com/questions/14815/security-concerns-with-x11-forwarding

相关内容