我有一个全新的 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-session
在i3-session
这些文件中尝试:
我还制作了备份副本/etc/xrdp/startwm
并将原始副本更改为刚刚
#!/bin/sh
gnome-session
我也尝试过i3-session
,xfce-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 进程正在运行,并且正在解决窗口管理器问题。