.rdp。两条路的认证和客户端开关不一样,混用会表现为窗口还没出来就没了。
选哪条路
同一用户本机已经有 GNOME 时,不要再给 xrdp 起第二套
gnome-session。GNOME 50 会直接报 A graphical session is already running!,窗口管理器 1–2 秒 SIGABRT,客户端闪退。这时应镜像本机会话。
GNOME 46 仍有 X11 会话时,也可以走 xrdp 独立会话,但本机 seat 上不该再挂着同一用户的 gnome-shell。
怎么连
公网(frp):
组网已通时,可直连 overlay 上的
<overlay-ip>:<listen-port>,不必绕 frp。这条应走组网网卡,不经过 Clash TUN。
连之前先完全断开旧会话,不要点「重连」到已经死掉的 XFCE / 黑屏会话。客户端里若缓存了旧端口,改 .rdp 后仍可能连错。
.rdp 开关
xrdp(0.9 / 0.10 对 CredSSP / GFX 都不完整,Mac Windows App 尤其容易黑屏或秒断):
full address 里的端口必须等于服务端真实监听端口。xrdp 默认 3389,以 /etc/xrdp/xrdp.ini 的 port= 和 ss -lntp 为准,不要沿用旧文件里的自定义端口。
链路
xrdp + frp:<vps-public-ip>:<ssh-remote-port> → 家用主机 :22。RDP 按同一套 frp 习惯另开一个远程端口。
相关角色:
- 家用主机:用户
<linux-user>,xrdp 听<xrdp-port>,本机 UFW 未开 - 入口 VPS:
<vps-public-ip>,frps,UFW 默认 DROP
systemctl restart frpc。SSH 也走这条 frp,重启会短暂断开 <ssh-remote-port>。
GNOME 远程桌面(镜像本机,组网直连示例):
systemctl --user enable --now gnome-remote-desktop.service。grdctl rdp enable、关 view-only、设 TLS 证书、grdctl rdp set-credentials。空凭据会直接 Credentials are not set, denying client。
3389 只能有一个占用方。xrdp 和 GNOME 远程桌面不要同时听这个端口。
假连通
公网或 overlay 上 TCP「能连上」还不等于对面在说 RDP。-
Clash Party TUN
覆盖规则里若把入口 IP 丢进国内代理组,TUN 会假连通,Windows App 报 0x204。
改成DIRECT,并在 tun 里排除:源文件在 Clash Party 的 override 目录(~/Library/Application Support/mihomo-party/override/)里你自己的覆盖 YAML。订阅重载可能把work/config.yaml盖回去,覆盖规则要留着。 -
入口 VPS 的 UFW
frps 已经在听<rdp-remote-port>,但 INPUT 默认 DROP,公网 SYN 被丢。SSH 远程端口若早已放行,RDP 新端口要单独加: -
组网 overlay 用户态 TCP
开启用户态协议栈 / KCP 代理时,客户端对 服务端并未监听 的端口也可能 SYN-ACK,随后立刻断开。本机探测会显示「通」,服务器上127.0.0.1:<port>却是 Connection refused。以服务器本机ss/ 本机回环探测为准,不要用客户端 TCP 通当作 xrdp 在听。
xrdp 原先不在 ssl-cert 组时,微软客户端要的 TLS 会失败,日志里是 Cannot read private key file /etc/xrdp/key.pem: Permission denied。
桌面怎么起
xrdp 独立会话
用 xrdp + xorgxrdp + ubuntu-session,不要投本机那套没接显示器的:0。
~/.xsession:
/etc/xrdp/startwm.sh 在 exec Xsession 之前:
gsettings get org.gnome.mutter experimental-features。scale-monitor-framebuffer 会画到离屏缓冲,xrdp 抓到的是黑根窗口。xrdp 会话里把它清掉:
gdm 的登录界面,<linux-user> 名下不能再有 gnome-shell。
较新的 Ubuntu(GNOME 49/50)已经没有 X11 的 GNOME Shell 会话。这时不要指望 xrdp + gnome-session --session=ubuntu;本机已登录就走镜像,本机未登录就用 GNOME 远程登录(系统服务,虚拟显示器),或换非 GNOME 的 X11 会话。
镜像本机会话
本机已经用同一用户登录时:screen-share-mode用mirror-primaryview-only关掉,否则只能看不能操作- 锁屏时 Mutter 会
Session creation inhibited,Windows App 窗口还没出来就消失。连之前确认loginctl show-session的LockedHint=no,或关掉空闲自动锁屏 - 本机 GNOME 退出后共享即停
走过的弯路
xrandr 在没插显示器时所有 HDMI/DP 都是 disconnected,current 1024 x 768。这种画面投到远程没有意义。
排障
route -n get <vps-public-ip> 会走 Clash TUN,RDP 握手超时。排除后应走物理网卡。组网直连时确认走 overlay 网卡,而不是 Clash 的假 IP。