优雅的远程连接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
。