gnome-remote-desktop.service),不要再指望 xrdp 起第二套 gnome-session。xrdp 仍可用于 Cinnamon 等 X11 会话。
密码、证书私钥不要写进笔记。RDP 密码在服务器 /root/<rdp-user>.pass,用 sudo grdctl --system status --show-credentials 核对。SSH 别名、overlay IP 以本机 ~/.ssh/config 为准。
选哪条路
同一用户本机已经有 GNOME 时,不要再给 xrdp 起第二套
gnome-session。GNOME 50 会直接报 A graphical session is already running!,窗口管理器 1–2 秒 SIGABRT,客户端闪退。这时应镜像本机会话。
3389 只能有一个占用方。当前家用机是系统级 GNOME 远程登录;xrdp 服务是 disabled。
当前家用机(ub-home)
SSH 别名ub-home。图形用户 aaa 给本机/SSH 用;RDP 专用用户是独立 GNOME 账号(GECOS:Independent GNOME for RDP)。
没插物理显示器 不会导致「凭据无效」。远程登录 Greeter 日志是
No seat assigned, running headlessly,虚拟会话照样起。NVIDIA Display Active: Disabled 只说明物理口没接。
~/.xsession 若仍 exec cinnamon-session-cinnamon2d,那是给 xrdp 用的。重新启用 xrdp 会进 Cinnamon,不是 GNOME。要 GNOME 就别开 xrdp。
怎么连
组网已通时,直连 overlay 上的<overlay-ip>:3389,不必绕 frp。这条应走组网网卡,不经过 Clash TUN。
公网(frp):
连之前先完全断开旧会话,不要点「重连」到已经死掉的 XFCE / 黑屏会话。客户端里若缓存了旧端口,改
.rdp 后仍可能连错。
.rdp 开关
GNOME 远程登录(系统服务,Windows App / mstsc 必开重定向):
use redirection server name:i:1 让客户端在 ServerRedirection 之后走 RDSTLS + 一次性凭据。不开这一行时,Windows 会把第一跳的用户名密码再发给 handover,服务端日志是 Could not find user in SAM database 或 NTLM MIC 失败,客户端弹「凭据无效」。1
不要写 prompt for credentials:i:1。Windows App 即使用户名密码已在钥匙串里,这一行也会每次弹窗。
GNOME 远程桌面(镜像本机,无二次重定向):
full address 里的端口必须等于服务端真实监听端口。以 ss -lntp 为准,不要沿用旧文件里的自定义端口。
Windows App 记住密码
密码存在 macOS 钥匙串,不在.rdp 明文里。
- 连接条目:
~/Library/Containers/com.microsoft.rdc.macos/Data/Library/Application Support/com.microsoft.rdc.macos/com.microsoft.rdc.application-data.sqlite(ZBOOKMARKENTITY+ZCREDENTIALENTITY) - 钥匙串:
service=com.microsoft.rdc.macos,account=凭据 UUID ZNILPASSWORD=0且.rdp里prompt for credentials:i:0才会自动填
链路
GNOME 远程登录(当前默认,组网直连):Sending server redirection,并拉起 gdm-greeter-2。随后还有一次从登录会话到用户会话的重定向。1
对照:
xrdp + frp:
<vps-public-ip>:<ssh-remote-port> → 家用主机 :22。RDP 按同一套 frp 习惯另开一个远程端口。
相关角色:
- 家用主机:SSH 用户与 RDP 专用用户分开;系统级 grd 听 3389;本机 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。
假连通
公网或 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 通当作 RDP 在听。
xrdp 原先不在 ssl-cert 组时,微软客户端要的 TLS 会失败,日志里是 Cannot read private key file /etc/xrdp/key.pem: Permission denied。
桌面怎么起
GNOME 远程登录(独立 GNOME)
系统服务,给专用用户一个无头 GNOME,不镜像aaa 的本机会话。
sudo grdctl --system rdp set-tls-cert / set-tls-key。凭据在 TPM 不可用时回落到 GKeyFile(/var/lib/gnome-remote-desktop/.../credentials.ini)。
xrdp 独立会话
只用于 X11 桌面。GNOME 50 不要走这条。~/.xsession 示例(Cinnamon 2D,软件渲染,给 xorgxrdp):
gnome-session --session=ubuntu,并在本机 seat 上不要挂着同一用户的 gnome-shell。scale-monitor-framebuffer 会导致纯黑,xrdp 会话里清掉:
镜像本机会话
本机已经用同一用户登录时:screen-share-mode用mirror-primaryview-only关掉,否则只能看不能操作- 锁屏时 Mutter 会
Session creation inhibited,Windows App 窗口还没出来就消失。连之前确认loginctl show-session的LockedHint=no,或关掉空闲自动锁屏 - 本机 GNOME 退出后共享即停
走过的弯路
xrandr 在没插显示器时所有 HDMI/DP 都是 disconnected。镜像本机这条路没有画面可抓;远程登录不依赖这些接口。
排障
Credentials are not set, denying client→ 没set-credentialsSession creation inhibited→ 多半锁屏(镜像本机)server supports only NLA Security→ 客户端 CredSSP 没开Init TPM credentials failed→ 正常,走 GKeyFile
route -n get <vps-public-ip> 会走 Clash TUN,RDP 握手超时。排除后应走物理网卡。组网直连时确认走 overlay 网卡,而不是 Clash 的假 IP。