Headless Server Portal 认证与远程桌面排障全记录

背景与网络拓扑

在一台运行 Fedora 44 Server 的无显示器(Headless)高性能计算服务器上,机器同时接入了多套网络。其中,校园有线网需要通过 Dr.COM Web Portal 进行网页登录认证。由于服务器未安装默认图形界面,且存在多网卡出口路由竞争,无法直接弹窗认证。

为了实现认证和后续的图形化运维,先后尝试了 CLI 脚本模拟认证SSH 动态隧道(SOCKS5)+ 本地浏览器XFCE + xrdp 远程桌面,以及连接同网段另一台 Rocky Linux 10.2(KDE Plasma Wayland + KRDP) 主机。在这一过程中遇到了多默认路由屏蔽、ARP 故障、xrdp 闪退与画面假死、KRDP XDG Desktop Portal 注册失败等一系列典型问题。

网络拓扑与接口分布

整个排障环境的网络拓扑结构如下所示:

涉及的核心网络接口信息表:

主机节点接口名称IP / 掩码作用说明
Fedora Serverenp171s0192.168.202.2/24与 Mac 直连网口,提供稳健的带外 SSH 和 RDP 运维通道
Fedora Serverenp172s010.65.152.121/16校园有线网(NetworkManager 连接名 有线连接 1),待认证
Fedora Serverwlp173s010.124.245.201/24实验室备用 WiFi(连接名 KEROLT),已可连通外网
Fedora Servertun010.112.112.2/24实验室内部互联隧道
Rocky Linux 10.2tun010.112.112.4/24已运行 KDE Plasma Wayland 桌面及 KRDP 服务的计算节点

一、现象排查:有线网卡已获取 IP,却无法访问互联网

1. 现象观察

通过 nmcli 查看,enp172s0 状态正常,且已通过 DHCP 成功获取到了 IP 地址与默认网关:

1
2
3
接口: enp172s0 (有线连接 1)
IP 地址: 10.65.152.121/16
默认网关: 10.65.0.1

但在强制绑定该接口访问公网时,外部网络完全不可达:

1
2
ping -I enp172s0 223.5.5.5
# 结果: 100% packet loss

2. 逐层排查证据

  • 二层 / 三层连通性正常:能够稳定 ping 通上联汇聚交换机/默认网关,时延极低且无丢包:
    1
    2
    
    ping -I enp172s0 10.65.0.1
    # 结果: 0% packet loss,rtt min/avg/max = 0.42/0.51/0.63 ms
    
  • 公网 ICMP 流量被丢弃:外部 IPv4 地址(如公共 DNS 223.5.5.5)100% 丢包。
  • 应用层 HTTP 探测暴露劫持与重定向:使用 curl 针对公网 IP 发起纯 HTTP 请求,捕获到了典型的 302 重定向报文:
    1
    
    curl -I --interface enp172s0 http://223.5.5.5
    
    返回如下响应头:
    1
    2
    3
    
    HTTP/1.0 302 Moved Temporarily
    Server: NetEngine Server 1.0
    Location: http://10.1.116.8/a79.htm?zjnudrcom8905=ethtrunk/2:1077.0
    
    进一步获取重定向目标页面的响应,其 HTTP 响应头包含 Server: DrcomServer1.0,页面标题明确显示为 上网登录页

3. 根因剖析与多默认路由优先级陷阱

物理链路、DHCP 协商及局域网通信均正常。校园网出口部署了 Dr.COM Web Portal 准入控制系统,未认证主机允许访问校园内网及 Portal 认证服务器,但所有外部公网流量均被网关拦截并重定向。

在排查初期,如果不加 --interface enp172s0 直接在终端执行 curl http://www.baidu.com,会发现能够正常访问互联网。检查系统路由表:

1
2
3
$ ip route show
default via 10.124.245.141 dev wlp173s0 proto dhcp src 10.124.245.201 metric 50
default via 10.65.0.1 dev enp172s0 proto dhcp src 10.65.152.121 metric 102
📌 重要

多出口优先级陷阱: 系统同时存在两条默认路由(0.0.0.0/0)。WiFi 接口(wlp173s0)的路由 metric 为 50,优先级高于有线网卡(enp172s0)的 102。因此未经指定出接口的普通应用流量默认通过 WiFi 出口访问外网,完全掩盖了有线网络尚未认证的事实。排查多网卡主机时,**必须显式指定出接口(-I--interface)**才能观测到真实的接口状态。

二、方案 A:纯命令行自动化 Dr.COM 认证

对于长期运行的 Headless 服务器,最优雅的解决方案是编写无需图形界面的认证脚本,配合 systemd 或 crontab 实现开机与断线自动认证。

1. 认证接口逆向分析

查看 Portal 登录页源码及加载的 JavaScript 脚本,提取出关键参数:

1
2
3
4
authloginport = 801
authloginpath = '/eportal/?c=ACSetting&a=Login'
authuserfield = 'DDDDD'
authpassfield = 'upass'

进一步确认底层支持 JSONP 方式提交登录请求,其服务端标准登录接口为:

1
http://10.1.116.8:801/eportal/?c=Portal&a=Login

使用测试参数验证接口响应:

1
curl -s "http://10.1.116.8:801/eportal/?c=Portal&a=Login&callback=dr1003&login_method=1&user_account=,0,testuser&user_password=wrongpass"

服务端返回 JSONP 格式响应:

1
dr1003({"result": 0, "msg": "账号不存在", "ret_code": 1})

能够明确返回认证系统业务错误码,证明接口路径、方法及参数格式完全正确。参数中 user_account=,0,${USER} 为典型的运营商标识前缀(,0, 代表校园网默认出海线路)。

2. 自动化登录脚本实现

为提高脚本通用性与安全性,账号密码通过环境变量注入,避免硬编码明文密码。

创建脚本 ~/.local/bin/drcom-auth.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env bash
# ==============================================================================
# 脚本名称: drcom-auth.sh
# 作用说明: 校园网 Dr.COM Portal 命令行自动化认证脚本
# ==============================================================================
set -euo pipefail

IFACE="${DRCOM_IFACE:-enp172s0}"
REALM="${DRCOM_REALM:-10.1.116.8:801}"
USER="${DRCOM_USER:?错误: 必须提供 DRCOM_USER 环境变量}"
PASS="${DRCOM_PASS:?错误: 必须提供 DRCOM_PASS 环境变量}"

# 1. 动态获取指定接口的当前 IPv4 地址
IP=$(ip -4 -o addr show dev "$IFACE" | awk '{print $4}' | cut -d/ -f1 | head -n1)
if [[ -z "$IP" ]]; then
  echo "[!] 错误: 接口 $IFACE 未获取到有效 IPv4 地址,请检查 DHCP 状态" >&2
  exit 1
fi

echo "[*] 正在通过接口 $IFACE (IP: $IP) 请求认证..."

# 2. 发起 GET JSONP 登录请求
resp=$(curl --interface "$IFACE" -sS -m 15 -G \
  "http://${REALM}/eportal/" \
  --data-urlencode "c=Portal" \
  --data-urlencode "a=Login" \
  --data-urlencode "callback=dr1003" \
  --data-urlencode "login_method=1" \
  --data-urlencode "user_account=,0,${USER}" \
  --data-urlencode "user_password=${PASS}" \
  --data-urlencode "wlan_user_ip=${IP}" \
  --data-urlencode "wlan_user_ipv6=" \
  --data-urlencode "wlan_user_mac=000000000000" \
  --data-urlencode "wlan_ac_ip=" \
  --data-urlencode "wlan_ac_name=")

# 3. 结果判断
if grep -q '"result":1' <<< "$resp"; then
  echo "[+] 认证成功!服务器响应: $resp"
else
  echo "[-] 认证失败!服务器响应: $resp" >&2
  exit 2
fi

赋予执行权限并测试运行:

1
2
chmod 700 ~/.local/bin/drcom-auth.sh
DRCOM_USER="my_student_id" DRCOM_PASS="my_password" ~/.local/bin/drcom-auth.sh
💡 提示

建议将脚本存放在 ~/.local/bin/usr/local/bin 等持久目录。避免放置在 /tmp 下,防止系统定时清理(如 systemd-tmpfiles-clean)或机器重启后丢失。


三、方案 B:SSH Tunnel + 本地浏览器转发

在某些特殊场景下(例如 Portal 临时启用了滑动验证码、短信二次验证或复杂的动态前端安全检测),纯命令行脚本无法处理交互式验证,此时需要借助客户端浏览器呈现认证页面。

1. 动态端口转发(SOCKS5)

在本地 Mac 终端执行:

1
2
# 建立后台动态 SOCKS5 代理隧道
ssh -D 21219 -N -C kerolt@192.168.202.2

配置本地浏览器代理(建议使用独立浏览器 Profile 或 SwitchyOmega 插件):

  • 代理协议:SOCKS5
  • 代理服务器127.0.0.1
  • 端口21219
📝 备注

SOCKS5 代理客户端设置的端口必须与 SSH 命令 -D 参数指定的本地监听端口(如 21219)保持严格一致,避免端口不匹配导致连接被拒。

2. 多网卡环境下的流量出口陷阱与对策

在 SOCKS5 隧道中,连接是由远程 Linux 主机发起的。根据前文分析的 Linux 路由规则,由于 WiFi 的 metric 优先级高于有线网卡,SOCKS5 转发的流量仍然会从 WiFi 接口流出,从而无法触发有线网卡的 Portal 页面。

快速应对策略:临时断开 WiFi 连接。

由于 Mac 是通过直连网卡(192.168.202.0/24)与服务器建立 SSH 会话的,关闭 WiFi 并不会中断当前的 SSH 隧道:

1
2
3
4
5
6
7
# 临时关闭 WiFi,使有线网卡成为唯一默认出口
sudo nmcli connection down KEROLT

# 在 Mac 浏览器中访问任意 HTTP 网站(如 http://neverssl.com),完成 Portal 认证

# 认证完成后重新激活 WiFi
sudo nmcli connection up KEROLT

(进阶方案:亦可配置基于 UID 的 ip rule 策略路由,将特定用户发起的流量固定导向 enp172s0,但单次运维中临时 down 掉 WiFi 效率最高。)

3. 踩坑复盘:静态端口转发为何报 channel 4: open failed

在排查过程中,曾尝试通过静态端口转发将认证服务器直接映射到本地:

1
2
3
4
ssh -N \
  -L 18080:10.1.116.8:80 \
  -L 18010:10.1.116.8:801 \
  kerolt@192.168.202.2

随后在本地浏览器访问 http://127.0.0.1:18080 时,SSH 终端频繁输出如下报错:

1
channel 4: open failed: connect failed: open failed

很多工程师遇到这个错误容易误判为 SSH 权限或配置问题。在服务器端查看邻居解析状态暴露了真相:

1
2
ip neigh show dev enp172s0
# 输出: 10.1.116.8 dev enp172s0 FAILED
⚠️ 警告

排查经验channel open failed: connect failed 表明 Mac 到服务器的 SSH 隧道完全通畅,但服务器向目标转发地址发起 TCP 三次握手失败。 当时认证服务器 10.1.116.8 自身的 ARP 处于 FAILED 状态,导致 80 与 801 端口在网络层根本不可达。这属于校园网认证系统服务端的暂时性故障。SSH 隧道无法绕过上游服务端本身的网络宕机。

四、方案 C:Fedora Server 部署 XFCE + xrdp 远程桌面

如果日常维护需要常驻图形交互环境(例如浏览网页图形控制台、观察 GPU 仪表盘或应对复杂的交互式验证),在 Headless 服务器上安装轻量级桌面环境 + xrdp 是兼顾资源消耗与易用性的方案。

1. 安装与网络隔离

安装轻量级 XFCE 桌面环境与 xrdp 服务:

1
2
3
sudo dnf group install -y xfce-desktop
sudo dnf install -y xrdp xorgxrdp xrdp-selinux dbus-x11 firefox
sudo systemctl enable --now xrdp
📝 备注

服务器不需要将系统默认目标切换为 graphical.target,继续维持无头服务器的标准 multi-user.target 运行即可。xrdp 的 sesman 组件会在用户通过 RDP 发起连接时,按需动态拉起独立的虚拟 Xorg 会话,无连接时不占用额外 GPU/渲染资源。

防火墙最小权限放行: 为防止将 RDP 暴露在开放的校园网环境中,只允许 Mac 直连管理网段访问 3389 端口:

1
2
3
4
sudo firewall-cmd --permanent --zone=FedoraServer \
  --add-rich-rule='rule family="ipv4" source address="192.168.202.0/24" port port="3389" protocol="tcp" accept'

sudo firewall-cmd --reload

2. 踩坑与排障(一):登录认证成功后瞬间闪退

故障现象

在 Mac 端使用 Windows App(原 Microsoft Remote Desktop 客户端)连接服务器,输入用户名和密码验证通过后,远程桌面窗口一闪黑屏,随后立即自动关闭断开。

日志溯源

查看 xrdp 与 sesman 服务的运行时日志:

1
journalctl -u xrdp -u xrdp-sesman --since "-5 min"

日志中出现以下典型会话终结记录:

1
2
3
4
login was successful - creating session
connected to Xorg
Xorg server closed connection
Session on display 10 has finished

根因剖析

在 Fedora 系统中,用户主目录下若不存在 ~/.Xclients,xrdp 会回退调用系统全局的 /etc/X11/xinit/Xclients。由于系统中未安装默认的 GNOME 桌面环境,该全局脚本无法自动探知并拉起 XFCE,窗口管理器启动指令执行完毕后立即退出,导致 Xorg 服务端判定会话结束而直接关闭连接。

解决方案

在用户主目录下显式创建 ~/.Xclients 启动脚本,通过 dbus-launch 启动 XFCE 会话,并务必刷新 SELinux 安全标签:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cat > ~/.Xclients <<'EOF'
#!/bin/sh
export XDG_SESSION_TYPE=x11
unset DBUS_SESSION_BUS_ADDRESS
exec dbus-launch --exit-with-session startxfce4
EOF

chmod 700 ~/.Xclients
# 恢复文件 SELinux 上下文,避免被安全策略拦截执行
restorecon -v ~/.Xclients

sudo systemctl restart xrdp

3. 踩坑与排障(二):进入桌面后画面卡死假死

故障现象

成功登录进入 XFCE 桌面,打开终端或 Firefox 运行几秒钟后,鼠标移动无响应,整个桌面画面彻底冻结。

排查数据

在直连 SSH 终端中实时排查系统资源与连接状态:

  • 节点负载极低:load average: 0.80, 0.48, 0.32
  • 可用内存充裕(剩余 ~21 GiB);
  • xfce4-sessionXorgxfwm4firefox 进程均处于正常睡眠(S)状态,并无崩溃或死锁;
  • RDP 协议的 TCP 3389 连接处于稳定的 ESTABLISHED 状态。

进一步排查 /var/log/xrdp.log 与图形日志,发现核心症结在于:

  1. 动态分辨率频繁重协商:Mac 客户端在窗口模式下拖动边缘改变大小时,频繁向 xrdp 发送动态分辨率重置请求,导致 xrdp 持续高频重建 OpenH264 编码管道,造成协议处理管道阻塞;
  2. 窗口合成器冲突:XFCE 默认的 xfwm4 合成器(Compositor)在虚拟帧缓冲区中处理半透明与阴影特效时发生图形同步阻塞。

综合优化措施

  1. 禁用 XFCE 窗口合成器: 在终端下执行命令,关闭当前 X 屏幕下的合成器功能:
    1
    2
    
    DISPLAY=:10.0 XAUTHORITY="$HOME/.Xauthority" \
      xfconf-query -c xfwm4 -p /general/use_compositing -s false
    
  2. 客户端锁定固定分辨率: 在 Mac 客户端连接设置中,将显示分辨率固定为如 1920x1080,并取消勾选“自动根据窗口大小调整远程分辨率(Update the session resolution on resize)”。
  3. 回退 xrdp 编解码器为稳健的 RFX: OpenH264 硬件/软件加速在某些客户端上容易引发通道协商挂起。编辑 /etc/xrdp/gfx.toml,将编解码器回退为纯 RemoteFX(RFX):
    1
    2
    
    [codec]
    order = [ "RFX" ]
    
    重启服务生效:
    1
    
    sudo systemctl restart xrdp
    
💡 提示

会话生命周期管理: 直接点击客户端窗口的关闭按钮,仅代表断开当前 RDP 传输层连接,后台的 Xorg、XFCE 和 Firefox 等应用会保持原样继续驻留运行,下次重连时会直接恢复现有桌面。如果任务结束希望释放服务器内存,应在 XFCE 界面右上角点击 Log Out(注销) 正常终止会话。

五、进阶实践:通过 KRDP 接入 Rocky Linux 10.2 (KDE Wayland)

在另一台处于科研专网隧道(10.112.112.4)的实验室计算节点上,系统为 Rocky Linux 10.2,且物理机前台正在运行 KDE Plasma 6 (Wayland) 桌面。

对于 Wayland 显示服务架构,传统的 X11 xrdp 方案无法直接捕获 Wayland 合成器画面。KDE 官方自 Plasma 6 起深度集成了 KRDP(基于 FreeRDP 实现的 Wayland 原生远程桌面组件),能够直接共享当前活动的 Plasma 桌面会话。

1. 配置与激活 KRDP 用户服务

KRDP 作为 systemd 用户级服务(User Service)运行,依赖 D-Bus 会话总线。需为其配置自签名 TLS 证书并启用系统用户认证:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1. 授予 Wayland 远程桌面 Portal 权限
flatpak permission-set kde-authorized remote-desktop org.kde.krdpserver yes

# 2. 生成自签名证书与私钥
install -d -m 700 ~/.local/share/krdpserver
openssl req -nodes -new -x509 \
  -keyout ~/.local/share/krdpserver/krdp.key \
  -out ~/.local/share/krdpserver/krdp.crt \
  -days 3650 -batch \
  -subj "/CN=10.112.112.4"
chmod 600 ~/.local/share/krdpserver/krdp.key

# 3. 写入 KRDP 配置文件
kwriteconfig6 --file krdpserverrc --group General \
  --key Certificate "$HOME/.local/share/krdpserver/krdp.crt"
kwriteconfig6 --file krdpserverrc --group General \
  --key CertificateKey "$HOME/.local/share/krdpserver/krdp.key"
kwriteconfig6 --file krdpserverrc --group General \
  --key SystemUserEnabled true

# 4. 启动并启用 KRDP 用户服务
systemctl --user enable --now app-org.kde.krdpserver.service

2. 踩坑与排障(一):XDG Desktop Portal 注册失败(App ID 命名不一致)

故障现象

KRDP 服务启动后立即进入异常退出状态,用户日志中反复输出如下报错:

1
2
Failed to register with host portal
App info not found for 'org.kde.krdp-server'

根因剖析

在系统 RPM 软件包中,安装的 Desktop 入口文件名为:

1
/usr/share/applications/org.kde.krdpserver.desktop

但 KRDP 内部向 xdg-desktop-portal 请求远程桌面会话句柄时,所传递的 App ID 字符串为 org.kde.krdp-server(中间多了一个连字符 -)。Portal 无法在应用列表中匹配到该 App ID 的 desktop 文件,从而拒绝了注册请求。

解决方案

在用户级应用目录中创建别名 desktop 文件,并为该 App ID 单独授予权限:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mkdir -p ~/.local/share/applications
cp /usr/share/applications/org.kde.krdpserver.desktop \
  ~/.local/share/applications/org.kde.krdp-server.desktop

# 显式授予新 ID 远程桌面权限
flatpak permission-set kde-authorized remote-desktop org.kde.krdp-server yes

# 依次重启 Portal 相关服务与 KRDP
systemctl --user restart xdg-desktop-portal.service
systemctl --user restart plasma-xdg-desktop-portal-kde.service
systemctl --user restart app-org.kde.krdpserver.service

3. 踩坑与排障(二):客户端 0x204 错误分层诊断

在 Mac 客户端连接 10.112.112.4:3389 时,客户端经常报出笼统的 0x204 错误代码(通常代表连接超时或协议握手失败)。建议严格按照以下流程逐步定位:

关键检查点:

  1. 四层连通性与监听确认

    1
    2
    3
    4
    5
    6
    
    # 在 Mac 端直接探测目标端口
    nc -vz 10.112.112.4 3389
    
    # 若通过 SSH 端口转发(如本地映射为 13389):
    lsof -nP -iTCP:13389 -sTCP:LISTEN
    nc -vz 127.0.0.1 13389
    
  2. 防火墙真实来源 IP 校验: 目标机防火墙必须放行真实的报文来源 IP。如果 Mac 拥有隧道直达路由,源 IP 为 10.112.112.1;如果经过 Fedora Server 跳板转发,目标机看到的源 IP 则为 Fedora 的 10.112.112.2

    1
    2
    3
    4
    5
    
    # 以 Mac 直连隧道 IP 为例:
    sudo firewall-cmd --permanent --zone=public \
      --add-rich-rule='rule family="ipv4" source address="10.112.112.1/32" port port="3389" protocol="tcp" accept'
    
    sudo firewall-cmd --reload
    
📌 重要

KRDP 的核心设计限制: KRDP 本质上是现有活跃桌面的屏幕共享器(Screen Sharer),而不是独立的会话创建器。它无法像 xrdp 那样在后台按需创建独立的 X/Wayland 虚拟桌面,也无法在锁屏界面 SDDM 阶段进行远程认证。 主机重启后如果停留在 SDDM 显示管理器登录界面,KRDP 用户服务将无法启动。必须在物理机本地登录一次进入桌面,或者在 SDDM 中配置自动登录(需结合物理环境安全风险综合评估)。


六、体系化排障方法论与命令速查表

在面对 Linux 多网卡路由竞争、Web Portal 准入重定向以及跨架构远程桌面(X11 vs Wayland)的复合故障时,建议遵循自底向上(Bottom-Up)的分层诊断法

诊断层级验证重点典型故障特征核心排查命令
L1/L2 物理与链路层网线、PHY 状态、协商速率、ARP 解析物理断开、ARP 状态为 FAILEDip link show
ethtool <接口>
ip neigh show
L3 网络与路由层IP 掩码正确性、多默认路由 metric 权重、源地址路由流量从次级网卡流出、无法 ping 通网关ip -4 addr show
ip route show
ip route get <目标IP>
L4 传输与安全层TCP 监听端口、iptables/firewalld 规则、NAT 源地址端口未监听、SYN 报文被防火墙 DROPss -lntp
nc -vz <目标IP> <端口>
firewall-cmd --list-all
L7 准入与认证层HTTP 302 重定向、Portal 状态码、JSONP 响应外网流量被拦截、Portal 脚本报错curl -I -v --interface <接口> http://neverssl.com
桌面与应用会话层Xorg/Wayland 生命周期、D-Bus、SELinux、合成器RDP 登录后闪退、画面卡顿冻结、XDG 授权失败journalctl -u xrdp -u xrdp-sesman -e
systemctl --user status app-org.kde.krdpserver

常用诊断命令速查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. 快速检查多网卡连接状态与路由
nmcli device status
ip route show
ip route get 223.5.5.5

# 2. 绑定特定接口测试网关与外网连通性
ping -I enp172s0 10.65.0.1
curl -I --interface enp172s0 http://223.5.5.5

# 3. 端口连通性探测与监听确认
nc -vz 10.112.112.4 3389
ss -lntp | grep -E '3389|801'

# 4. 远程桌面核心日志追查
journalctl -u xrdp -u xrdp-sesman --since "-10 min"
journalctl --user -u app-org.kde.krdpserver.service --since "-10 min"

总结与备忘清单

通过本次排障与调优,我们打通了多网卡 Headless 主机在校园网复杂准入环境下的完整访问链路:

  • 有线网络连通性:确认物理与 DHCP 链路正常,根因为 Dr.COM Portal 拦截;理清了 WiFi 与有线网卡的多默认路由优先级陷阱。
  • 自动化认证:完成了命令行逆向与 JSONP 脚本化封装(drcom-auth.sh),支持环境变量传参,可随时接入定时保活。
  • SSH 代理旁路:明确了 SOCKS5 代理受系统路由表支配的特点,掌握了多出口主机的临时断网认证策略,溯源了静态端口转发时上游 ARP FAILED 故障。
  • xrdp 稳定运行:通过配置 ~/.Xclients 修复了缺少窗口管理器的闪退问题;通过禁用 xfwm4 合成器、锁定客户端分辨率与切换 RFX 编解码器,彻底根治了画面假死。
  • KRDP 机制摸底:定位并修复了 Wayland 环境下 org.kde.krdp-server XDG Desktop Portal App ID 不匹配的缺陷;明确了其屏幕共享属性及依赖已登录桌面会话的运行边界。
使用 Hugo 构建
主题 StackJimmy 设计