优雅的远程连接 Ubuntu 图形桌面
绝大多数时候利用 SSH
可以方便的连接上 Ubuntu
服务器完成大部分工作,但是仍有部分程序必须在图形化界面下运行,比如 nvidia-settings
、virtualbox
、firefox
等。本篇文章基于 Ubuntu 20.04
下进行编写。
xrdp 方案
vnc协议
是 Linux 下最为流行的远程协议,除此之外同样有程序为 Ubuntu
实现了微软的 rdp协议
。使用这种方法,可以:①方便的支持任意多个用户同时连接;②对 Windows 客户端非常友好,使用 mstsc 就可以直接连接;但是同样有些不足:xrdp 实现了一个虚拟的 XServer,这个 XServer 并没有载入 N 卡驱动,因此 nvidia-settings 仍旧无法打开。
sudo apt update
sudo apt install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp
- 使用 mstsc 连接服务器
- 选择
Xorg
,输入用户名及密码登录
vino 方案
Ubuntu
默认使用 GNOME
作为桌面环境,使用与之配套的 vino
就可以优雅的开启一个 VNC Server。使用这种方法,缺点很多:①服务器必须接上显示器并登陆一个且只能一个用户,这意味着如果存在多个用户,将不能够同时使用,切换用户时还必须跑到服务器前面注销当前用户再登陆另一个用户;②你的一举一动在物理显示器上可以观察的一清二楚。
sudo apt update
sudo apt install vino
- 打开 Ubuntu 设置 -> 共享 -> 屏幕共享 -> 启用 -> 允许连接控制屏幕 -> 需要密码 (VNC 密码)-> 允许网络,如图 1 所示
- 关闭 TLS 加密,实测不关闭,则 macOS 自带的 VNC,Windows 下最新版本的 RealVNC Viewer、TigerVNC Viewer 均不兼容
gsettings set org.gnome.Vino require-encryption false
- 使用任意 VNC Client 连接服务器
- 每个要连接 VNC 的用户都要完成以上 3~4 的操作

使用 VNC 连接登录屏幕
为了弥补 vino 方案致命的缺陷,需要一个方法连接 Ubuntu 的登录屏幕,Ubuntu 使用 gdm3
作为用户登录管理器,但是 Ubuntu 20.04
下的 gdm3
并不能直接使用 VNC 连接登录屏幕。可行的办法有两个:①使用 lightdm
代替 gdm3
,但是安装 lightdm
时有近 40 个依赖包要一并安装;②关闭 Wayland
使用旧的 X11
的方式渲染登录屏幕。以下均假设 125
为 gdm
使用的用户,可以通过命令 cat /etc/passwd | grep gdm
查看。
1 |
sudo vim /etc/gdm3/custom.conf
|
此时需要安装一个 VNS Server 用于连接登录屏幕,尽管 Linux 下有很多 VNC Server,但是目前仅发现只有 x11vnc
可以满足登录屏幕的 VNC 功能。
1 |
# 1. 安装x11vnc
|
systemd 启动脚本,可以将 x11vnc 配置为系统服务:
1 |
sudo bash -c 'cat <<EOF > /etc/systemd/system/x11vnc.service
|
使用 VNC Client 连接到 Ubuntu
端口 5910
并登陆后,该屏幕随后会黑屏,然后需要再开一个 VNC Client,用于连接已登陆的用户会话,当用户注销后,该屏幕又会回到登录状态,因此将 vino 方案与该方法一起配合使用,可以达到远程切换用户登录的目的。又由于这个 VNC 方案使用的是物理显示器上的 X11 Server
,因此 N 卡驱动可以正常加载,可以打开 nvidia-settings
。
预览: