Ubuntu Desktop 实践 25、多用户、多桌面、远程桌面和虚拟桌面 您所在的位置:网站首页 虚拟桌面怎么切换 Ubuntu Desktop 实践 25、多用户、多桌面、远程桌面和虚拟桌面

Ubuntu Desktop 实践 25、多用户、多桌面、远程桌面和虚拟桌面

2024-04-17 21:14| 来源: 网络整理| 查看: 265

在上一篇文章中,我带领大家深度体验了一下 X Window。这一篇,我决定再接再厉,玩一个大的。

这次,我要探索一下几个问题:

在同一台电脑上,能不能同时运行几套桌面?如果能同时运行几套桌面,那么这几套桌面能不能分别运行在 X11 和 Wayland 上?如果桌面运行在 Wayland 上,还能像上一篇文章中那样,把远程的 X11 程序带到本地显示吗?Wayland 对远程桌面的支持怎么样?Gnome 对远程桌面的支持怎么样?VNC 远程桌面怎么玩?有 headless 模式吗?

下面我们进入正题。

一、多用户和多桌面

Linux 是一个多用户分时操作系统,可能个人 PC 太流行,以至于大家都把它忘了。其实即使在个人 PC 上,也是可以同时登录多个用户的。

那么,开启多套桌面的最简单的办法,就是创建多个用户,然后每个用户开启一套桌面。

既然有 GUI,咱就不麻烦adduser命令了。直接使用 GUI 创建多个用户,如下图:

图1、添加用户

使用设置里面的用户管理功能,一口气多添加几个用户。

然后,按 Ctrl+Alt+F1 键,可以跳到 tty1,也就是 gdm3 的登录界面,如下图:

图2、多用户的登录界面

在登录一个用户的时候,可以选择他的桌面类型,是 Xorg 还是 Wayland,如下图:

图3、选择 Xorg 还是 Wayland

我一口气把这几个用户全登录上去。

怎么做到同时登录多个用户呢?那就是不使用电源按钮中的注销和切换用户功能。每次登录新用户的时候,都直接按 Ctrl+Alt+F1 切换到登录界面,之前登录的用户不退出。

这时,如果我们按 Ctrl+Alt+F2 切换到第一个用户的桌面,是这样的:

图4、第一个用户的桌面

这是之前我美化过了的主用户的桌面。如果我们按 Ctrl+Alt+F3 到 Ctrl+Alt+F6 切换到其他用户的桌面,是下面这样的:

图5、其他用户的桌面

这是 Ubuntu 默认的样子。

使用ps af命令最能看到效果,可以看到,我们一个运行了 5 套桌面,其中 tty2、tty4 和 tty7 上面的是 Wayland,tty3 和 tty5 上面是 Xorg,而 tty6 是 CLI。如下图:

图6、多套桌面运行的进程

由此可见,在同一台机器上运行多套桌面是完全可行的,而且这些桌面可以分别运行在 Xorg 和 Wayland 上。

二、在运行 Wayland 的桌面上,把远程电脑的 X11 程序显示到本地桌面上

我还是使用上一篇文章中用到的 Debian 12 系统作为远程主机。但是这一次,我的 Ubuntu 和 Debian 12 的桌面都运行在 Wayland 上。如下图:

图7、Debian 12 的桌面运行在 Wayland 下

然后,还是使用ssh -X连接到 Debian 12,然后运行gvim,效果和上一篇文章中是一样的,如下图:

图8、依然可以很顺利地把远程的 X11 程序带到本地桌面

可以看到,依然可以很顺利地把远程的 X11 程序带到本地桌面。为什么呢?那是因为当有 X11 的程序需要显示的时候,Wayland 会自动起一个 Xwayland,这也是一个 X Server,用来显示 X11 程序。如下图:

图9、使用 ps 查看 Xwayland 进程

因为有了一个 Xwayland 兼容层,所以即使我们的桌面运行在 Wayland 下,我们仍然可以运行所有的 X11 程序,不管是本地的,还是远程的。

三、Gnome 自带的远程桌面功能

下面,我们开始探索远程桌面功能。

首先探索的,是 Gnome 自带的远程桌面功能。我们还是用 Debian 12 当远程主机。在“设置”中,开启桌面共享功能,如下图:

图10、Gnome 自带的远程桌面功能,在设置中开启

而 Gnome 下的远程桌面客户端软件是 Remmina。

在 Ubuntu 中,先使用sudo aptitude install remmina安装。使用该程序连接 Debian 12 的桌面,如下图:

图11、使用 Remmina 连接到 Debian 12

可以看到,使用 Remmina 连接到 Debian 12 很顺利哦,而且它使用的是 RDP 协议。

但是这个远程桌面还是有它的局限性:

该远程桌面功能由 Gnome 提供,所以远程主机必须运行桌面系统;远程主机的桌面系统必须在前台运行,而且用户还不能锁屏。如果我们把 Debian 12 切换到其它的 tty,或者用户锁了屏,那么我们 Remmina 中的远程主机就完全动不了了。

这有点满足不了我的需求,我想的是,即使远程主机是纯服务器状态、纯 CLI 状态,我也应该能远程连接它,然后起一台虚拟的桌面系统,这套桌面系统只显示在 VNC 中。

怎么办呢?

没关系,我们有 TigerVNC。而且我的这种需求,也有一个专门的说法,叫 VNC 的 headless 模式。我把它称之为虚拟桌面好了。

四、虚拟桌面(VNC 的 headless 模式)

下面,我来展示开启虚拟桌面的方法,需要严格按照下面的步骤进行。

1、安装 TigerVNC

在 Debian 12 中,我先切换到 root 用户,以便于安装软件。

运行aptitude install vnc-server命令,它会提示有好几个软件包可以选择。有tightvnc,有tigervnc-standalone-server,还有 tigervnc 的另外两个软件包。但是这里,tigervnc-standalone-server最符合我们的需求,所以使用aptitude install tigervnc-standalone-server安装它,如下图:

图12、安装 tigervnc-standalone-server2、继续使用 root 用户,编辑 /etc/tigervnc/vncserver.users

这个配置文件的作用,就是指定以哪个用户运行 tigervncserver,会使用这个用户目录下的文件,并使用这个用户下的密码进行验证。此外,还会设置 Display 的名称和用户名之间的对应关系。其内容如下:

图12、编辑 /etc/tigervnc/vncserver.users

可以看到,我使用的用户是 youxia,Display 名称是 :1。youxia 是我的主用户,用它来运行 VNC 虚拟桌面,就不能用它来登录系统的桌面。如果想用其它的用户运行 VNC 的虚拟桌面,就改成别的用户的名字。当然,之前要先添加这个新用户。

3、设置密码

我们使用最简单的认证方式,那就是使用密码进行认证。所以需要设置 youxia 用户的 VNC 连接的密码。这时,我们要切换回 youxia 用户,不能使用 root 用户。

切换回 youxia 用户,运行vncpasswd命令设置密码,如下图:

图13、设置 youxia 用户的 VNC 认证密码4、配置 VNC Server

使用 youxia 用户启动 tigervncserver 之后,运行一个什么样的桌面环境呢?使用什么样的认证方式呢?这可以在 ~/.vnc/config 里面配置。

所以,仍然在 youxia 用户的命令行中,输入vim .vnc/config编辑配置文件,如下图:

图14、设置 VNC Server

这里设置了启动 gnome 桌面,并将屏幕的大小设置为 1920x1080。最后一行设置了认证方式,这个很重要。虽然直接把 VNC Server 暴露在公网中是不安全的。但我这里为了简单起见,就不管这些了。

5、修改启动模式、重启电脑、启动 tigervncserver 服务

前面说过,既然使用了 youxia 用户来运行 VNC 虚拟桌面,就不能使用它来登录系统的桌面。那么,我们不妨把系统改成启动后不进入桌面,直接进入全 CLI 界面。

方法就是使用 root 用户运行systemctl set-default multi-user.target命令。如下图:

图15、更改启动模式

然后重启电脑,系统进入纯 CLI 模式。使用 root 登录,输入systemctl start tigervncserver@:1命令,启动 tigervncserver 服务。如下图:

图16、启动 tigervncserver 服务

这里的@:1就和我们前面设置的:1=youxia呼应上了。当然,我们也可以使用别的 Display number,也可以使用别的用户。

6、使用 Remmina 连接 VNC Server

这是,我们就可以在 Ubuntu 中远程连接 Debian 12 了。客户端软件嘛,还是使用 Remmina。协议选 VNC。

需要注意的是端口号。VNC 协议的默认端口号是 5900,我们设置的 Display number 是 :1,所以我们需要连接 5901 端口。如果设置的是 :2,则连接 5902 端口,以此类推。

图17、使用 Remmina 连接 Debian

OK,我们成功了。Debian 中的 root 用户可以退出了,我们使用 root 用户登录的唯一目的是使用systemctl start tigervncserver@:1启动 tigervncserver 服务。如果不想每次都手动启动的话,可以使用systemctl enable tigervncserver@:1来激活这个服务,以后都会自动启动。

这时,我们的 Debian 12 可以完全运行在服务器状态之下,没有任何用户登录,没有启动任何桌面。但是我们可以使用 Remmina 连接它,运行一套虚拟桌面,这个桌面只显示在 Remmina 中。

如下图:

图18、Debian 中不显示任何桌面

Debian 12 中不显示任何桌面。

桌面系统只显示在 Ubuntu 中的 Remmina 中,如下图:

图19、桌面系统只显示在 Remmina 中总结

Linux 中的多用户、多桌面、远程桌面、虚拟桌面就是这么牛。祝大家玩得开心!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有