我有一个在虚拟 KVM 机器中运行的 Debian Stretch x64 服务器。我已在 Windows 7 Pro x64 上安装了 Cygwin,并希望在 Debian 计算机上使用 Windows 计算机上的 Cygwin X 服务器运行 X 应用程序。
这是我的服务器端 SSH 守护进程配置(Debian 端):
AcceptEnv LANG LC_*
AllowAgentForwarding no
AllowTcpForwarding no
AllowStreamLocalForwarding no
ChallengeResponseAuthentication no
Ciphers [email protected],[email protected],aes256-ctr
Compression no
DebianBanner no
HostKeyAlgorithms [email protected],[email protected],ssh-rsa,ssh-ed25519
KbdInteractiveAuthentication no
KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group-exchange-sha256
ListenAddress 192.168.20.12:22
LoginGraceTime 20
MACs [email protected],[email protected]
PasswordAuthentication no
PermitUserRC no
Protocol 2
PubkeyAcceptedKeyTypes ssh-rsa,ssh-ed25519
RekeyLimit 100M 20m
Subsystem sftp /usr/lib/openssh/sftp-server
TCPKeepAlive no
X11Forwarding yes
X11UseLocalhost yes
这是我用来konsole
在服务器(Windows 端)上启动的批处理文件:
set CYG=c:\cygwin64
%CYG%\bin\run.exe XWin -multiwindow -resize -clipboard -listen inet :1
SET DISPLAY=:1
SET LANG=en_US.UTF-8
%CYG%\bin\ssh.exe -f -Y [email protected] "LANG=en_US.UTF-8 konsole"
"C:\Program Files (x86)\cmdow\cmdow.exe" X-Morn-multiwindow /HID
exit
原则上,这是有效的:执行此批处理文件时,konsole
在我的 Windows 桌面上的窗口中启动。但窗口中出现两条错误消息cmd
:
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
作为最后的手段,我可以忍受这些错误,因为konsole
(以及我需要的其他应用程序)显然实际上可以工作,但我真的更愿意知道那里发生了什么(即导致错误消息的原因)。
通过阅读我上面提到的其他问题/线程/博客条目,我的印象是该问题可能与缺失nvidia
或mesa
组件有关。因此,我在 Debian 服务器上安装了其中一些组件(以 root 身份):
aptitude install libgl1-mesa-glx libgl1-glvnd-nvidia-glx
事实上,当我运行上面提到的批处理文件时,libGL
不再抛出错误。但不幸的是,现在konsole
Windows 桌面上不再出现该窗口。
再次卸载这两个软件包后,konsole
当我运行批处理文件时,该窗口再次出现 - 当然,libGL
错误消息也是如此。
我想了解这两种现象。那么错误消息的原因可能是什么libGL
(考虑到通过 SSH 运行 X 应用程序时缺少mesa
驱动nvidia
程序或库不应发挥作用),以及为什么安装上述两个软件包会阻止窗口konsole
出现?
答案1
对我来说
apt install libgl1-mesa-glx
在 20.0.8-0ubuntu1~20.04.1 下有什么区别吗?两条错误消息都消失了
答案2
安装以下软件包后问题就消失了(apt
已将它们安装在一起):
- dbus-x11
- libglib2.0-测试
- libdbus-glib-1-2
- libgee-0.8-2
- libmoonshot1
我无法确定这些包中的哪个(或其组合)使问题消失。我不打算做进一步的检查,因为这台机器同时已经成为生产服务器。
不过,我想我可以给出一个有根据的猜测:
libgee-0.8-2
并且libmoonshot1
与低级 X11 或 UI 部分没有任何直接关系,因此我非常确定它们已退出游戏。libglib2.0-tests
(顾名思义)只是 的测试套件GLib
,所以我很确定这也超出了游戏范围。- 我实在不知道剩下的两位候选人中哪一位可能解决了这个问题。我感觉这个问题更多的是与 相关,
GLib
而不是与 相关X11
,所以我最喜欢的是libdbus-glib-1-2
。但这确实只是一种感觉……
如果处于相同情况的人(即设置 Debian 延伸服务器并通过 SSH 运行 X 应用程序)能够确认这一点,那就太好了。但即使没有,我认为这个答案是有用的,因为这个问题已经在其他地方被问过几十次了,但没有给出解决方案(据我所知)。