优雅的远程连接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 updatesudo apt install xrdpsudo systemctl enable xrdpsudo systemctl start xrdp- 使用mstsc连接服务器
- 选择
Xorg,输入用户名及密码登录
vino方案
Ubuntu默认使用GNOME作为桌面环境,使用与之配套的vino就可以优雅的开启一个VNC Server。使用这种方法,缺点很多:①服务器必须接上显示器并登陆一个且只能一个用户,这意味着如果存在多个用户,将不能够同时使用,切换用户时还必须跑到服务器前面注销当前用户再登陆另一个用户;②你的一举一动在物理显示器上可以观察的一清二楚。
sudo apt updatesudo 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。