目录

Mac 远程桌面控制Ubuntu 22.04 (RDP)

背景

对于跨平台开发人员,有时需要同时操作多台开发设备,并且需要 UI 界面,否则 SSH 就 Ok 了。

多套键鼠操作肯定是麻烦的,注意到公司/学校内往往是有局域网,所以我选择的是一台主设备远程控制其他机器,局域网内的远控体验非常好(包括操作流畅度以及画面清晰度)。

公网的就不说了,百花齐放, TeamViewer、向日葵、AnyDesk这些都是比较常用的。

书写本文时,我的系统版本是 Ubuntu 22.04,配置好后,可以让 Mac 和 Windows 都能远程桌面控制该 Ubuntu 机器。

Why RDP

用Xrdp是因为比VNC好很多,磁盘共享这种附带功能不说,关键是RDP的算法,用起来要比VNC的RFB快VNC采用的RFB算法,下面放一下他们俩的主要区别:

  • RFB是在服务器端将窗口在显存中画好之后将图像传给客户端,客户端只充当一个图像解码显示的角色;
  • RDP则将画图的工作交给了客户端,服务器需要了解客户端显示能力的具体情况,以便作出相应调整。RFB主要传图像,RDP主要传指令。就一般应用而言,RFB数据量太大,RDP对客户端要求较高,因此RFB适用于瘦客户端,RDP适用于低速网络。

个人体验而言,局域网内试过各种VNC的Client远控,体验都不太好,画面模糊,鼠标迟滞。反观 RDP 远控,个人体验,基本和操作真机无异。

配置xfce4

为什么要选择Xfce4 呢?==> 因为这个桌面 稳定且轻量化啊,操作起来快啊。

而且,原生的GNOME 桌面我也试过,不是很好用,所有菜单都缩到左上角一个 [活动] 选项,还动不动就黑屏,Gnome 我服了。

执行下述命令即可安装 xfce4 极其组件:

1
2
3
4
5
6
7
8
# 更新 apt 信息
sudo apt update

# 安装Xfce桌面
sudo apt install xubuntu-desktop

# 这是服务器连接显示器要用的桌面,重启后显示器应出现图形界面
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

编辑配置文件,将默认桌面切换为 xfce4 ,轻量快速体验好。

执行下方命令即可配置默认桌面为xfce4:

1
echo xfce4-session > ~/.xsession

配置xrdp

执行下方命令即可完成 xrdp 的安装

1
2
# 安装
sudo apt install xrdp

执行下方命令即可完成 xrdp 的配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 允许xrdp 运行 
sudo systemctl enable xrdp

# 配置防火墙,让xrdp的3389 端口可以被访问。
sudo ufw allow 3389/tcp
# 想更安全的话执行: sudo ufw allow from 192.168.33.0/24 to any port 3389
# 其中 IP 范围是 192.168.33.0/24,可以换成你想要的

# 需要添加xrdp到 ssl-cert group 
sudo adduser xrdp ssl-cert

# 编辑ini文件,在文件末尾添加   exec startxfce4
sudo vim /etc/xrdp/xrdp.ini

配置完后,Xrdp 服务将自动运行,当然,也可以手动重启 xrdp 服务:(可选操作)

1
2
sudo service xrdp restart 
sudo systemctl restart xrdp 

Xrdp 的状态确认可以通过执行 sudo systemctl status xrdp来确认:

状态正常,大概应该是这样的,没有明显报错:

下方信息我是已经远程状态,没被远程可能信息稍有不同。但是不能有明显的service报错信息。

1
2
3
4
 xrdp.service - xrdp daemon
     Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: >
     Active: active (running) since Tue 2023-03-25 16:47:22 CST; 3h 39min ago
 ......(其他信息)

远控软件推荐

目前我们是使用 RDP 协议控制 Ubuntu,那么在不同平台,均有不错的软件可以用来远控该 Ubuntu:

  • Windows

    1. 使用系统自带的远程控制软件 mstsc ;

    2. 或使用神器 MobaXterm,该神器支持多种协议,RDP 只是其中一种,用 MobaXterm 的好处是不用每次都输密码登陆,可管理登陆项。

  • Mac

    目前在用的 2 款免费软件是 Apple Store: Parallels ClientMicrosoft Remote Desktop for Mac(Apple Store里好像也有),任选一个都可以,都很好用。

    用来远控本文的 Ubuntu 或者 Windows 机器都是可以的,局域网下体验非常不错,基本和操作真机无异。

  • Linux

    Linux 下的远程软件(包含 RDP 协议控制的),比较有名的应该是 Remmina 和 Vinagre,我都没试过,自行下载尝试吧。

FAQ

关于 XRDP service失败

按照上述的方法配置了xrdp后,理论上应该是能正常用起来了,But :

假设还有问题,更多的错误排查可以参考这 2 篇文章:ubuntu18远程桌面_zhayushui的专栏51Cto: Xrdp服务安装配置实现Linux远程桌面访问

远程连接后终端窗口点击没反应

原因:上述将桌面换成 Xfce4 之后,terminal 仍然还是 gnome-terminal ,所以出现了一些兼容问题,导致 Terminal 启动失败。

如何解决:

1
2
# 切换终端
sudo update-alternatives --config x-terminal-emulator

打印出如下内容后:

1
2
3
4
5
6
7
8
9
 2 个候选项可用于替换 x-terminal-emulator (提供 /usr/bin/x-terminal-emulator)。
 选择    路径              优先级 状态
\------------------------------------------------------------
\* 0      /usr/bin/gnome-terminal.wrapper  40    自动模式
   1      /usr/bin/gnome-terminal.wrapper  40    手动模式
   2      /usr/bin/xfce4-terminal.wrapper  40    手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:
update-alternatives: 使用 /usr/bin/xfce4-terminal.wrapper 来在手动模式中提供 /usr/bin/x-terminal-emulator (x-terminal-emulator)

选择和 xfce4 相关的 terminal,上述是2 ,则输入 2 然后 Enter ,然后重新连接 RDP 远程即可。

参考文章

  1. 阿里云:如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)
  2. 知乎:Ubuntu Server xfce4桌面、Xrdp远程桌面安装:深度学习环境搭建
  3. 如何在 Ubuntu 22.04 LTS 上安装 Xfce 桌面