Skip to content

宿主机和虚拟机共享屏幕

前言: 垃圾腾讯!只知道盈利的商业公司!中国 Linux 发展的拦路者和毒瘤!

这篇文章起因是想在 Linux 上使用腾讯会议,我不是很喜欢使用 Wine,而且微信这些软件还好,就怕开会这种实时软件突然出了点问题那就麻烦了。所以装虚拟机使用,但是共享屏幕没法共享宿主机的内容,这是个痛点。

所以要找一个共享屏幕软件,宿主机共享屏幕给虚拟机(即宿主机作为服务端、虚拟机作为客户端),然后虚拟机的腾讯会议再共享给别人。

写给我的话(总结)

主要就两点:以后找什么多用 GitHub!然后就是安装不成功就要特别特别注意版本问题!

软件筛选

一开始是打算用 VNC,最好的就是 TigerVNC 了,但是它的痛点就是服务端没法缩放。虚拟机因为有标题栏的原因会导致屏幕比宿主机小一点,所以没有缩放就导致共享只能共享一部分。

然后搞了好久其他 VNC,没有用。但是突然发现又想到其实 VNC 是有些多余的,因为它侧重于 Control,也就是客户端可以控制服务端,但是我只需要共享屏幕就行了,所以我最好使用只有共享屏幕的软件。

于是搜了一下 screen sharing,但是好家伙,全都是些啥...又忙活了半天,结果没找到。

最终解决

最后想到了神奇的 GitHub,果然这里面有一个,而且特别符合要求:就只是单纯的共享屏幕,作者也说了别的功能不会加,貌似他是被微软的远程桌面的高延迟低画质给气的才搞这一个软件,牛啊牛啊。

项目链接: https://github.com/screego/server

下面是安装配置方法。

下载安装

就正常下载就好,如果用 AUR 的话,配置示例文件是 /etc/screego.config,如果是从 GitHub 下载二进制的话,配置示例文件是 screego.config.example,之后要把示例文件修改到 /etc/screego/server.config

生成证书

按照下面的方法来就行,虽然我也不知道原理,基本上是照搬了 https://www.jianshu.com/p/3a2c01577c7c

openssl genrsa -des3 -out server.key 2048
openssl rsa -in server.key -out server.key
# 过程中会要求输入一些信息,不填也可
openssl req -new -key server.key -out server.csr
# 创建 CA 证书
openssl req -new -x509 -key server.key -out ca.crt -days 3650
# 创建服务器证书
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

修改配置

把默认的配置文件放在 /etc/server.config

SCREEGO_EXTERNAL_IP=192.168.128.128 # 改成本机 IP 地址
SCREEGO_SERVER_TLS=true
SCREEGO_TLS_CERT_FILE=/path/to/server.crt
SCREEGO_TLS_KEY_FILE=/path/to/server.key

启动

命令 screego serve 进行启动,然后在浏览器打开就行。比如 IP 地址是 192.168.128.128,那么就打开 https://192.168.128.128:5050,注意一定要有 https 才行。此外如果发现不能分享屏幕,看看是不是浏览器版本的问题。(我搞了几个小时,最后发现是因为虚拟机才安装,Edge 版本比较低,裂开...)

不用这么复杂

后来我发现对于我这种需要虚拟机和宿主机之间共享屏幕的,不需要那么复杂。也不需要开头输入 https 了,虽然可能有安全问题...
配置文件如下。

# 好像什么地址都行
SCREEGO_EXTERNAL_IP=127.0.0.1
SCREEGO_SERVER_TLS=false

然后宿主机执行 screego serve,宿主机输入地址 localhost:5050,虚拟机输入地址 host_ip:5050。搞定。

Comments