CentOS Stream 8向日葵/Todesk/Teamviewer系列远程控制软件黑屏解决方案

P5R玩到了第三学期,今天准备下载P5A的时候,实验室老师过来问我一个问题:

Linux远程桌面黑屏,无法连接了

实际上我之前也碰到过同样的问题,不过发行版不一样,我是在深度(Deepin)上用XRDP连接的,因此,当时的解决方案是注销当前用户,就不会黑屏了。

当然,由于协议不一样,不可能让基于Todesk的用户注销再登录,原因很简单,这是个现有鸡还是现有蛋的问题:注销了用户Todesk就运行不了了!


先用谷歌搜,CSDN第一条就是Todesk的,博客上说什么“重启GNOME”,SUDO进去一重启,您还别说,注销了!

在控制端看设置,开关硬件加速无果,突然看到Todesk声称端到端加密,瞥一眼看到了TCP连接,联想到HTTPS/VMESS等协议也是基于时间进行加密的。虽然说TLS确实在TCP上,但直接写TCP加密确实有点不合适。

看了一眼受控端,时间不同,改了一改时间配置,依然黑屏。

在受控端打开浏览器用必应搜索,依然未果,但是黑屏的时候发现了一个有意思的事情:

鼠标移到开了一半的浏览器窗口上的时候指针竟然变了!

猜想是窗口之间的层级关系确实已经传输过来了,并且Todesk的其他功能正常。

继续换谷歌用英文搜,TeamViewer用户也遇到了相近问题,但不完全符合我的现状

考虑到向日葵用得更多一点,加上向日葵,Todesk找到了一篇文章:

CentosLinux8.2 向日葵被远程,远程向日葵桌面一直黑频
文章上说,改为Xorg即可

虽然作者打错标题了,但是确实解决了问题

注销改设置,发现没有XORG,选择经典(X11显示服务器),完美!

成功后找到的Teamviewer的相近问题

原理解析:大伙都知道,Windows下的桌面窗口管理器(dwm.exe)就那么一个,由于闭源,所以也没人知道进程和桌面窗口是怎么通信的。

由于Linux的开放性,用户可以安装多个桌面管理器,比如XFCE,XORG,GNOME之类的,这些都叫显示服务器。

进程作为客户端连接显示服务器(在本地网络内,可能是UNIX连接,通过传输数据来显示桌面)

TeamViewer等一众软件的原理是捕获鼠标指针的数据,再通过屏幕镜像传输到服务器上;

而Windows远程桌面传输的直接是窗口坐标值,类似于矢量数据,因此速度就快得多。

而为什么黑屏呢?估计就是新版X11对桌面的捕获方式做了改变,导致一众软件的不兼容。

问题搞定,今晚必通第三学期!

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据