一个计算机技术爱好者与学习者

0%

废弃笔记本电脑复活:第四篇 远程控制Ubuntu桌面

1. 前言

在笔记本电脑作为Ubuntu服务器使用时,大部分时候是不需要使用桌面(图形界面)的。但是,某些软件是必须要图形界面的,比如自带的浏览器,比如办公软件等等。

我们当然可以打开笔记本,直接使用桌面,但是这样就失去了笔记本电脑作为服务器的初衷。我们想要的是,服务器固定在一个位置,不需要再变动,一切操作都可以远程。

2. 远程控制Ubuntu桌面概述

远程控制Ubuntu桌面,常用的方法包括:

  • 使用VNCServer:安装配置VNCServer,通过VNC远程
  • 使用自带的远程控制功能:开启Ubuntu22自带的远程控制,通过RDP或VNC远程
  • 使用专业的远程控制软件:安装使用专业的远程控制软件,比如向日葵和RustDesk

3. 使用VNCServer

3.1. 安装配置VNCServer

1、安装图形化界面gnome

1
2
3
apt-get update && apt-get upgrade -y
apt-get install -y ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
reboot

2、安装vncserver并运行

1
2
3
4
apt-get install -y vnc4server # Ubuntu18/Ubuntu20
# apt-get install -y tightvncserver # Ubuntu22
vncserver # 按照提示配置vnc连接时的密码
ps -ef | grep vnc # 看到 Xvnc4 :1 ,说明是 5901 端口

3、修改vncserver配置

1
2
cp -p ~/.vnc/xstartup ~/.vnc/xstartup.bak 
vim ~/.vnc/xstartup

写入内容为:

1
2
3
4
5
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export XDG_MENU_PREFIX="gnome-flashback-"
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &

4、重启vnc会话

1
2
vncserver -kill :1 
vncserver -geometry 1920x1080 :1

参考文档:

3.2. 使用VNCViewer远程

1、本地安装VNCViewer

2、启动VNCViewer,新建连接
参数包括:

  • 主机的IP和端口(5901)
  • VNC连接密码

3.3. 问题:VNC连接灰屏

问题描述:在使用VNCViewer连接Ubuntu22中安装的vncserver时,第一次连接正常,第二次连接出现了灰屏。

解决办法:修改 xstartup 配置,然后重启vnc会话

1
2
3
4
5
6
7
8
9
#!/bin/sh
autocutsel -fork
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
unset DBUS_SESSION_BUS_ADDRESS
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check --debug &

参考文档:Ubuntu 安装 TightVNCServer 时灰屏

3.4. 问题:弹窗prevents Wi-Fi scans

问题描述:在使用VNCViewer连接Ubuntu22中安装的vncserver时,正常连接,但是会不停弹窗提示输入密码。
弹窗提示内容为:

1
2
3
System policy prevents Wi-Fi scans
An application is attempting to perform an action that requires privileges
Authentication is required to perform this action.

输入密码后,还会继续弹窗,无限循环。

解决办法:wifi scan授权。

1
vim /etc/polkit-1/localauthority/50-local.d/wifi.scan.pkla

写入如下内容:

1
2
3
4
5
6
[Allow Wifi Scan]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.wifi.scan;org.freedesktop.NetworkManager.enable-disable-wifi;org.freedesktop.NetworkManager.settings.modify.own;org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.network-control
ResultAny=yes
ResultInactive=yes
ResultActive=yes

参考文档:解决Ubuntu”Authentication required. System policy prevents WiFi scans”问题

4. 使用自带的远程控制功能

4.1. 开启Ubuntu22自带的远程控制

【安装配置VNC Server】一节中的方法,同样适用Ubuntu22。
除此之外,Ubuntu22内置了远程控制功能,可以直接开启RDP和VNC。因此,在使用Ubuntu22时,这种方法更加简单。

图形界面操作:Settings -> Sharing -> Remote Desktop

  • 开启 Remote Desktop:支持Windows的Remote Desktop Connection远程连接
  • 开启 Remote Control:支持使用远程连接软件进行操作控制
  • 开启 Enable Legacy VNC Protocol:支持使用VNC客户端连接和操作,同时建议选择 Require a password
  • 设置 Password:在Authentication部分设置密码,用于VNC连接

这种方法开启的VNC服务,端口默认为 5900

参考文档:

4.2. 问题:VNC连接报错bad rectangle

在使用VNCViewer连接Ubuntu22自带的VNC时,可能会报错:

1
2
Attempting to reconnect to VNC Server...
Protocol error: bad rectangle: 0x0 at 16191,5376 exceeds 1920x1080 at 0,0

解决办法:在VNCViewer中的Properties配置中,把Options中的 Picture quality 从 Automatic 调成 High
参考文档:

4.3. 问题:Ubuntu22自带的远程控制重启失效

问题描述:Ubuntu22自带的远程控制功能,在重启后会失效。
具体来说:

  • 原生的登录功能,需要我们的设备连接显示器,并解锁登录才能够使用。
  • 原生的桌面共享,设置的用于连接的用户密码,会随着系统重启而使用随机字符串填充,影响我们登录。

解决办法:使用脚本自动对系统远程控制相关功能进行配置。

1
2
3
wget https://github.com/soulteary/ubuntu-remote-control-helper/raw/main/example/installer.sh
bash installer.sh
UBUNTU_REMOTE_USER=ubuntu UBUNTU_REMOTE_PASS=ubuntu123 urch

参考文档:

5. 使用专业的远程控制软件

5.1. 安装配置向日葵

配置了VNC,为什么还需要向日葵?答:使用向日葵的好处是不用考虑vnc配置问题,直接连Ubuntu原生桌面。

1、参考向日葵官方文档,安装向日葵
安装过程可能报错:

1
2
3
dpkg: dependency problems prevent configuration of sunloginclient:
sunloginclient depends on libgconf-2-4; however:
Package libgconf-2-4 is not installed.

解决办法:安装 libgconf-2-4

1
2
3
apt-get install libgconf-2-4
apt --fix-broken install
apt-get install libgconf-2-4

安装过程可能报错报错缺少 libwebkit2gtk-xxx
解决办法:安装 libwebkit2gtk ,修改并重新打包 deb

参考文档:

2、安装 lightdm ,并重启主机

1
2
apt install -y lightdm
reboot

3、查看向日葵服务状态

1
systemctl status runsunloginclient

4、运行向日葵
图形界面运行(推荐):
图形界面启动向日葵,登录个人账号,并设置开机自动启动。

命令行运行:

1
sudo /usr/local/sunlogin/bin/sunloginclient

参考文档:

5.2. 问题:向日葵连接卡住或黑屏

问题描述:使用向日葵远程,可能会卡在 正在建立远程连接… ,或者登录后黑屏。

问题原因:向日葵要求显示管理器使用 lightdm,或者 gdm 不开启 wayland。

解决办法:显示管理器切换 lightdm,或者 gdm 关闭 wayland。

切换lightdm:

1
2
3
cat /etc/X11/default-display-manager
dpkg-reconfigure lightdm # 选择 lightdm
reboot

gdm 关闭 wayland:

1
2
3
4
cat /etc/X11/default-display-manager
vim /etc/gdm3/custom.conf # 修改 gdm3 配置:WaylandEnable=false
systemctl restart gdm3
reboot

参考文档:《Ubuntu22安装使用安卓模拟器Waydroid》

5.3. 安装配置RustDesk

参考文档:《好好学Docker:自建RustDesk Server》