xrdp 无法在使用 i3 窗口管理器的 Arch Linux 上工作

xrdp 无法在使用 i3 窗口管理器的 Arch Linux 上工作

我有一个全新的 Arch Linux 安装,

[0s] $ uname -a
Linux fermata 4.8.11-1-ARCH #1 SMP PREEMPT Sun Nov 27 09:26:14 CET 2016 x86_64 GNU/Linux

我已经安装、启用并启动了 xrdp:

systemctl --type="server"
...
xrdp-sesman.service     loaded active running xrdp session manager
xrdp.service            loaded active running xrdp daemon

我也有 vncserver 运行:0

[0s] $ vncserver -list

TigerVNC server sessions:

X DISPLAY # PROCESS ID
:0          615

以下是正在监听的端口:

[0s] $ sudo lsof -Pi | grep LISTEN
...
sshd       361 root    3u  IPv4  15595      0t0  TCP *:22 (LISTEN)
sshd       361 root    4u  IPv6  15597      0t0  TCP *:22 (LISTEN)
xrdp-sesm  370 root    7u  IPv4  15228      0t0  TCP localhost.localdomain:3350 (LISTEN)
xrdp       375 root    7u  IPv4  16056      0t0  TCP *:3389 (LISTEN)
Xvnc       615 mark    4u  IPv4  14285      0t0  TCP *:5900 (LISTEN)
Xvnc       615 mark    5u  IPv6  14286      0t0  TCP *:5900 (LISTEN)
...

我正在尝试从 macOS Sierra 连接到 Arch 盒子,因此我下载并安装了 Microsoft 远程桌面(版本 8.0.36(内部版本 27228))并创建了一个配置文件,该配置文件指定了 Arch 盒子的 IP 地址,并有我的 Arch用户帐户和密码。

当我尝试连接时,出现一个灰色框,其中包含以下消息:

connecting to sesman ip 127.0.0.1 port 3350
sesman connect ok
sending login info to session manager, please wait...
xrdp_mm_process_login_response: login successful for display 10
VNC started connecting
VNC connecting to 127.0.0.1 5910
VNC error - problem connecting

我注意到 的登录成功display 10,并认为我需要在 :10 而不是 :0 上运行 VNC,因此我终止了 :0 会话并在 :10 上声明了一个新会话。我收到与上面相同的错误

...
xrdp_mm_process_login_response: login successful for display 11
...

这是日志的输出:

[0s] $ journalctl -f -u xrdp
-- Logs begin at Sat 2016-12-03 20:28:10 CST. --
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC Error after security negotiation
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC error before sending share flag
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC error before receiving server init
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC error before receiving pixel format
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC error before receiving name length
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC error before receiving name
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] xrdp_mm_module_cleanup
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[DEBUG] VNC mod_exit
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
Dec 06 08:05:25 fermata XRDP[4451]: (4451)(139899817027328)[INFO ] An established connection closed to endpoint: 127.0.0.1:3350 - socket: 11

iptables 为空:

[3s] $ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

一路上,我将 a.Xclient和 a.xsession文件添加到我的主目录中,并gnome-sessioni3-session这些文件中尝试:

我还制作了备份副本/etc/xrdp/startwm并将原始副本更改为刚刚

#!/bin/sh
gnome-session

我也尝试过i3-sessionxfce-session这里是安装的其他环境。

当我尾部 `.vnc/fermata:10.log 时,我看到以下内容:

** (nm-applet:4314): WARNING **: atk-bridge: GetRegisteredEvents returned message with unknown signature

** (nm-applet:4314): WARNING **: AT-SPI: Could not obtain desktop path or name


** (nm-applet:4314): WARNING **: AT-SPI: Could not obtain desktop path or name

polybars launched...
polybar|error  Monitor "HDMI2" not found or disconnected
polybar|error  Monitor "HDMI2" not found or disconnected

polybar是我的 i3 设置的一部分,因此 VNC 至少指向我最终想要的会话。

显然我遗漏了 xrdp 和 VNC 之间的一些关键部分。我不知道那件作品是什么。

答案1

您不必预先启动 vnc 会话,xrdp 会为您完成此操作(这就是为什么当您启动 :0 时它启动于 :10,当您启动 :10 时它启动于 :11)。

窗口管理器通常位于 $HOME/.xsessionrc 中

当您的 .xsessionrc 退出时,VNC 会话将退出。您可以为故障安全做的一件事是尝试运行 /usr/bin/xterm 而不是窗口管理器。这消除了“我的窗口管理器运行了吗?”的所有复杂性。如果您看到的屏幕上只有一个 xterm,那么您就知道 xrdp 进程正在运行,并且正在解决窗口管理器问题。

相关内容