XRDP 在 Linux 下的配置与调优

XRDP 在 Linux 下的配置与调优

众所周知 Windows 下有个很好用的工具叫做远程桌面,允许远程访问计算机的图形界面。而 Linux 御用的远程管理工具只有 SSH,没有图形界面,虽说用熟了很高效,但有的适合还是没有图形界面方便。此外 SSH 要运行图形界面的程序也没有远程桌面来的方便,必须要做 X11 转发。像 XRDP , TightVNC,都是 Linux 下的成熟远程桌面方案。

目前 Linux 下能用的远程桌面协议,一种是 VNC,还有一种就是微软的 RDP。VNC 协议只能支持简单的画面传输,,什么剪贴板交换,什么远程打印,传输文件,甚至播放音频啥的,都不要想。此外 VNC 在 Windows 上并没有默认的连接方式,因此我们果断选择 RDP。比较成熟解决方案的就是我们今天要介绍的 XRDP 。

XRDP 的官网似乎用的是 GitHub Pages?

演示系统:Ubuntu 22.04 LTS

目录

1 安装 XRDP2 XRDP 性能调优2.1 检查网络2.2 修改桌面壁纸2.3 降低颜色质量2.4 提高缓冲数据包大小2.5 禁用窗口合成器3 配置 XRDP3.1 启用加密3.2 自动关闭连接4 问题排查5 结语安装 XRDP首先,既然是要配置远程桌面,那么肯定得先有一个桌面。

推荐 xfce4 桌面,资源占用低,界面也不是过于难以忍受。

sudo apt install xfce4 xfce4-goodies安装完之后就算结束了,不需要额外配置 .xsession 文件。

接着就是安装 XRDP 的本体:

sudo apt install xrdp然后开启 XRDP 服务:

sudo systemctl enable --now xrdp这个时候已经可以尝试连接了,不过有可能会遇到问题,这个一会儿再讲。

连上去之后(假设你没有提前输入账号密码)大概就是上图这个效果,输入账号密码即可登录。注意 XRDP 不支持使用 SSH 密钥进行登录。

XRDP 性能调优假设这个时候你已经顺利地登陆了桌面,会发现桌面似乎卡卡的,没有 Windows 的远程桌面那么顺畅。毕竟不是 Linux 亲生的协议,调优是必须的。

检查网络这个其实是最根本的原因。如果你的服务器是那种 1 Gbps 的超级大水管,那么哪怕你啥都不调,也不大会卡。如果你是 1 Mbps 的小水管机器,那么只好接受自己远程桌面会卡的事实,不管你怎么优化都没什么用。

此外,如果你服务器在中国,那肯定也不会太卡。要是什么拼命绕路的鸟不拉屎的小地方的机房,那不管你怎么搞,该卡也还是卡。

修改桌面壁纸这个网上大部分教程似乎都没有提到…

由于 XRDP 实现上的原因,桌面壁纸并不能像 Windows 那样缓存在本地,而是会在每次需要传输壁纸某个部分的时候都传输一遍。这就导致了如果你的壁纸是很花里胡哨的二次元壁纸,那么几乎一定会卡。选择 xfce 默认的那几个都不错,不过最好是设置成纯黑。

其他种类的系统美化,比如换主题换图标什么的,都尽量避免。自己平时玩玩还好,服务器上就算了。

降低颜色质量修改 XRDP 配置文件:

sudo vim /etc/xrdp/xrdp.ini找到 max_bpp 这一行,修改为一个小一点的值,例如 16。

max_bpp=16这个配置改变的是色深,色深越小,能显示的颜色越少,当然相应的带宽占用也会越小。

提高缓冲数据包大小同样是编辑 xrdp.ini 这个文件,找到这两行(默认是被注释的),然后修改为一个大一点的值。

tcp_send_buffer_bytes=1048576

tcp_recv_buffer_bytes=2097152

注意不要超过你服务器的带宽,不然可能适得其反。

禁用窗口合成器禁用窗口合成器之后,桌面的特效会少很多。当然带宽也会跟着一起下来,速度自然就上去了。

sudo xfconf-query --channel=xfwm4 --property=/general/use_compositing --type=bool --set=false --create所有这些操作完成之后,别忘了重启服务:

sudo systemctl restart xrdp配置 XRDP这个时候,桌面大概率是不卡了,不过其行为依然不是最佳,至少和 Windows 的远程桌面还是有一定差距。

启用加密首先要把 xrdp 用户添加到 ssl-cert 用户组中:

sudo adduser xrdp ssl-cert接着依然是编辑 xrdp.ini 文件,找到这三行进行修改:

security_layer=negotiate # 这一行其实不用修改,默认的是可以的。如果要强制加密的话那就改成 tls。

certificate=/etc/xrdp/cert.pem

key_file=/etc/xrdp/key.pemXRDP 默认在配置目录下有一份自签名的证书,可以直接使用。

最终重启 XRDP 服务。

这个时候连接,应该会看到连接警告,提示证书不受信任。直接忽略就可以连上。

当然如果你很在意的话,那么还是搞一份正经的证书比较好。经过实测发现 Let’s Encrypt 的证书是可以直接使用的。

不过如果你要使用 Let’s Encrypt 的话,那么要注意默认的证书存放目录 XRDP 是不能访问的,必须要手动编写 deploy hook 把证书复制到一个 XRDP 可以读取的地方。

给一段示例代码:

#!/bin/bash

cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/xrdp/lcert.pem

cp /etc/letsencrypt/live/example.com/privkey.pem /etc/xrdp/lkey.pem

chown xrdp:xrdp /etc/xrdp/lcert.pem /etc/xrdp/lkey.pem

systemctl restart xrdp配置文件中的路径也要相应修改:

certificate=/etc/xrdp/lcert.pem

key_file=/etc/xrdp/lkey.pem这个时候再去连接就没问题了:

自动关闭连接默认情况下 XRDP 不会自动关闭已经断开的连接,会导致服务器上的可用连接数最终用完。

修改 sesman.ini 文件:

sudo vim /etc/xrdp/sesman.ini找到下面两行,修改成类似这样:

MaxSessions=50

KillDisconnected=true其中 MaxSessions 规定了最大会话数量,而 KillDisconnected 指示终止关闭的会话。对于释放资源来讲非常好用。

如果要做到连接同一会话那么就会比较复杂,先不介绍,等我研究明白了再介绍(雾)

问题排查由于 XRDP 不支持网络层身份验证 NLA,因此大部分人都会遇到和 NLA 有关的错误,提示“连接无法继续,因为未启用身份验证,并且远程计算机需要启用身份验证以进行连接”。微软官方也指出了 XRDP 的这个问题。

首先 Win+R 输入 systempropertiesadvanced,打开高级系统设置,并转到“远程”一栏。

选中“允许远程连接到此计算机”,并且取消勾选“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”。

如果还是不行,则需要编辑组策略。什么你说你是家庭版没有本地组策略编辑器?网上不是有教程吗自己去查啊(bushi)

打开 gpedit.msc,然后转到计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面会话主机 > 安全。

修改“要求使用网络级别的身份验证对远程连接的用户进行身份验证”为已禁用。

启用“远程(RDP)连接要求使用指定的安全层”,并且配置为 RDP。

如果还是不行,则以管理员身份运行这个命令,刷新组策略。

gpupdate /force还是不行,那么把“远程桌面连接”关掉,然后再打开。

依然不行就重启电脑。这个时候一定就行了,不可能还不行。

结语至此我们完成了 Linux 上 XRDP 远程桌面的配置,并且解决了由于 XRDP 不支持 NLA 造成的连接问题。这下 Linux 服务器也可以开开心心的用图形界面了~

💡 相关推荐

更换后盖玻璃价格多少(保修期内)
365即时比分足球

更换后盖玻璃价格多少(保修期内)

📅 06-28 👀 8313
Mac 使用者必學!9 種 關閉 Mac 應用程式 的方式
365即时比分足球

Mac 使用者必學!9 種 關閉 Mac 應用程式 的方式

📅 07-09 👀 571
洪荒十大神器 上古十大神器排名 远古时代的洪荒武器盘点