我正在尝试将 rdp 从带有 Raspberry pi 操作系统的 rpi 4 设置到使用 Remmina 运行 Arch Linux 的笔记本电脑。
目前我无法使用 Remmina 从我的 rpi rdp 到任何 Arch 机器(有两台)。但是,使用 rdesktop 作为客户端确实有效。
rdesktop 是一个不受欢迎的解决方案,因为我希望能够访问 Remmina 的功能,并可能以某种临时 kiosk 模式直接从 X 运行 Remmina。
watch systemctl status xrdp
这是在尝试使用 Remmina 从 rpi 连接到 Arch 计算机期间运行时,Arch VM/BM 上出现的令人讨厌的错误:
May 05 23:51:30 zion xrdp[26732]: [INFO ] xrdp_load_keyboard_layout: keyboard_type [4] keyboard_subtype [0]
May 05 23:51:30 zion xrdp[26732]: [INFO ] xrdp_load_keyboard_layout: model [] variant [] layout [us] options []
May 05 23:51:30 zion xrdp[26732]: [INFO ] TLS connection established from 10.0.0.94 port 43248: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384
May 05 23:51:30 zion xrdp[26732]: [INFO ] xrdp_caps_process_pointer: client supports new(color) cursor
May 05 23:51:30 zion xrdp[26732]: [INFO ] xrdp_process_offscreen_bmpcache: support level 1 cache size 7864320 MB cache entries 2000
May 05 23:51:30 zion xrdp[26732]: [INFO ] Loading keymap file /etc/xrdp/km-00000409.ini
May 05 23:51:30 zion xrdp[26732]: [WARN ] local keymap file for 0x00000409 found and doesn't match built in keymap, using local keymap file
May 05 23:51:31 zion xrdp[26732]: [ERROR] xrdp_iso_send: trans_write_copy_s failed
May 05 23:51:31 zion xrdp[26732]: [ERROR] SSL_shutdown: Server closed TLS connection
May 05 23:51:31 zion xrdp[26732]: [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed
我有4台机器:
- Windows 10 拉皮
- 虚拟机中的 Arch Linux
- “裸机”上的 Arch Linux
- rpi“裸机”上的 Raspberry pi 操作系统
以下是我迄今为止经历过的成功/失败场景,这些场景已经被重复和证实:
结果 | 来源 | 会话协议 | 目的地 |
---|---|---|---|
PF | 全部 | 通过 RDP 的 VNC | 转速 |
PF | 全部 | xorg 通过 rdp | Arch VM/BM |
S | WIN10 | xorg 通过 rdp | 转速 |
S | 转速 | 标准 RDP | WIN10 |
S | WIN10 | 通过 RDP 的 VNC | Arch VM/BM |
S | Arch VM/BM | 标准 RDP | WIN10 |
TF | 转速 | 不适用 | Arch VM/BM |
S | Arch VM/BM | xorg 通过 rdp | 转速 |
- S = 成功
- TF = 完全失败 = 在会话管理器可以获取非法凭据之前连接断开
- PF = 部分失败 = 没有启动窗口管理器,只有会话管理器的背景仍然存在
- ALL = 所有机器
- VM/BM = 虚拟机/裸机
尽管在 Arch VM/BM 上安装了 xorgxrdp 软件包,但我无法启动 Xorg 会话。
这里最重要的是建立从我的 rpi 到我的 Arch 机器的 rdp 会话,因为 rpi 是作为某种 rdp 门户运行的。
我尝试关闭 xrdp-sesman 以查看是否至少会导致建立连接。我的想法可能只是会话管理器有问题,它假设连接是单独建立的。此配置不起作用,似乎无法连接。
Arch Linux VM/BM 系统/应用程序信息(相同系统)
xrdp版本:
xrdp -v
xrdp 0.9.16
A Remote Desktop Protocol Server.
Copyright (C) 2004-2020 Jay Sorg, Neutrino Labs, and all contributors.
See https://github.com/neutrinolabs/xrdp for more information.
Configure options:
--prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--sbindir=/usr/bin
--with-systemdsystemunitdir=/usr/lib/systemd/system
--enable-jpeg
--enable-tjpeg
--enable-fuse
--enable-opus
--enable-rfxcodec
--enable-mp3lame
--enable-pixman
--enable-painter
--enable-vsock
CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
CPPFLAGS=-D_FORTIFY_SOURCE=2
Compiled with OpenSSL 1.1.1k 25 Mar 2021
Freerdp 版本:
xfreerdp /version
这是 FreeRDP 版本 2.3.2(不适用)
内核版本:
uname -r
5.10.27-1-lts
雷米纳版本:
remmina -V
Load modules from /usr/lib/remmina/plugins
Remmina plugin glibsecret (type=Secret) has been registered, but is not yet initialized/activated. The initialization order is 2000.
Failed to load plugin: /usr/lib/remmina/plugins/remmina-plugin-vnc.so.
Error: libvncclient.so.1: cannot open shared object file: No such file or directory
Failed to load plugin: /usr/lib/remmina/plugins/remmina-plugin-spice.so.
Error: libspice-client-gtk-3.0.so.5: cannot open shared object file: No such file or directory
The glibsecret secret plugin has been initialized and it will be your default secret plugin
org.remmina.Remmina - 1.4.13 (git n/a)
NAME TYPE DESCRIPTION PLUGIN AND LIBRARY VERSION
EXEC Protocol Execute a command 1.0
NX Protocol NX - NX Technology 1.4.13
RDP Protocol RDP - Remote Desktop Protocol RDP plugin: 1.4.13 (Git n/a), Compiled with libfreerdp 2.3.2 (n/a), Running with libfreerdp 2.3.2 (rev n/a), H.264 Yes
RDPF File RDP - RDP File Handler RDP plugin: 1.4.13 (Git n/a), Compiled with libfreerdp 2.3.2 (n/a), Running with libfreerdp 2.3.2 (rev n/a), H.264 Yes
RDPS Preference RDP - Preferences RDP plugin: 1.4.13 (Git n/a), Compiled with libfreerdp 2.3.2 (n/a), Running with libfreerdp 2.3.2 (rev n/a), H.264 Yes
ST Protocol Remmina simple terminal 1.0.0.0
XDMCP Protocol XDMCP - X Remote Session 1.4.13
glibsecret Secret Secured password storage in the GNOME keyring 1.4.13
Build configuration: HAVE_ARPA_INET_H=1 HAVE_ERRNO_H=1 HAVE_FCNTL_H=1 HAVE_NETDB_H=1 HAVE_NETINET_IN_H=1 HAVE_NETINET_TCP_H=1 HAVE_SYS_SOCKET_H=1 HAVE_SYS_UN_H=1 HAVE_TERMIOS_H=1 HAVE_UNISTD_H=1 WITH_APPINDICATOR=ON WITH_AVAHI=ON WITH_GCRYPT=ON WITH_ICON_CACHE=ON WITH_IPP=OFF WITH_LIBRARY_VERSIONING=ON WITH_MANPAGES=ON WITH_NEWS=OFF WITH_SSE2=ON WITH_TRANSLATIONS=ON WITH_UPDATE_DESKTOP_DB=ON
Build type: Release
CFLAGS: -D_FORTIFY_SOURCE=2 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fPIC -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wimplicit-function-declaration -Wredundant-decls
Compiler: GNU, 10.2.0
Target architecture: x64
Raspberry Pi OS 系统/应用程序信息
xrdp版本:
xrdp -v
xrdp 0.9.9
A Remote Desktop Protocol Server.
Copyright (C) 2004-2018 Jay Sorg, Neutrino Labs, and all contributors.
See https://github.com/neutrinolabs/xrdp for more information.
Configure options:
--enable-ipv6
--enable-jpeg
--enable-fuse
--enable-rfxcodec
--enable-opus
--enable-painter
--enable-vsock
--build=arm-linux-gnueabihf
--prefix=/usr
--includedir=${prefix}/include
--mandir=${prefix}/share/man
--infodir=${prefix}/share/info
--sysconfdir=/etc
--localstatedir=/var
--disable-silent-rules
--libdir=${prefix}/lib/arm-linux-gnueabihf
--libexecdir=${prefix}/lib/arm-linux-gnueabihf
--disable-maintainer-mode
--disable-dependency-tracking
--with-socketdir=/var/run/xrdp/sockdir
build_alias=arm-linux-gnueabihf
CFLAGS=-g -O2 -fdebug-prefix-map=/build/xrdp-q47Nhl/xrdp-0.9.9=. -fstack-protector-strong -Wformat -Werror=format-security
LDFLAGS=-Wl,-z,relro -Wl,-z,now -Wl,--as-needed
CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2
PKG_CONFIG_PATH=/build/xrdp-q47Nhl/xrdp-0.9.9/pkgconfig
Compiled with OpenSSL 1.1.1d 10 Sep 2019
Freerdp 版本:
xfreerdp /version
这是 FreeRDP 版本 2.0.0-dev5 (2693389a+debian)
内核版本:
uname -r
5.10.17-v7l+
雷米纳版本:
Remmina -V
:
** (org.remmina.Remmina:31546): CRITICAL **: 12:05:00.357: secret_service_load_collections_sync: assertion 'paths != NULL' failed [glibsecret] unable to get secret service: Unknown error. Plugin entry returned false: /usr/lib/arm-linux-gnueabihf/remmina/plugins/remmina-plugin-secret.so. StatusNotifier/Appindicator support: not supported by desktop. libappindicator will try to fallback to GtkStatusIcon/xembed WARNING: Remmina is running with a secret plugin, but it cannot connect to a secret service.
Remmina - 1.3.3 (git n/a)
NAME TYPE DESCRIPTION PLUGIN AND LIBRARY VERSION RDP Protocol RDP - Remote Desktop Protocol RDP Plugin:
1.3.3 (git n/a), Compiled with FreeRDP lib: 2.0.0-dev5 (2693389a+debian), Running with FreeRDP lib: 2.0.0-dev5 (rev 2693389a+debian), H264: Yes RDPF File RDP - RDP File Handler RDP Plugin:
1.3.3 (git n/a), Compiled with FreeRDP lib: 2.0.0-dev5 (2693389a+debian), Running with FreeRDP lib: 2.0.0-dev5 (rev 2693389a+debian), H264: Yes RDPS Preference RDP - Preferences RDP Plugin:
1.3.3 (git n/a), Compiled with FreeRDP lib: 2.0.0-dev5 (2693389a+debian), Running with FreeRDP lib: 2.0.0-dev5 (rev 2693389a+debian), H264: Yes SFTP Protocol SFTP - Secure File Transfer 1.3.3 SSH Protocol SSH - Secure Shell
1.3.3 VNC Protocol VNC - VNC viewer 1.3.3 VNCI Protocol VNCI - VNC viewer listen mode 1.3.3 glibsecret Secret Secure passwords storing in the GNOME keyring
1.3.3
Build configuration: HAVE_ARPA_INET_H=1 HAVE_ERRNO_H=1 HAVE_FCNTL_H=1 HAVE_NETDB_H=1 HAVE_NETINET_IN_H=1 HAVE_NETINET_TCP_H=1 HAVE_SYS_SOCKET_H=1 HAVE_SYS_UN_H=1 HAVE_TERMIOS_H=1 HAVE_UNISTD_H=1 WITH_APPINDICATOR=ON WITH_AVAHI=ON WITH_FREERDP=ON WITH_GCRYPT=ON WITH_GETTEXT=ON WITH_LIBRARY_VERSIONING=ON WITH_LIBSECRET=ON WITH_LIBSSH=ON WITH_LIBVNCSERVER=ON WITH_MANPAGES=ON WITH_NEON=ON WITH_SPICE=ON WITH_SSE2=OFF WITH_TELEPATHY=ON WITH_TRANSLATIONS=ON WITH_VTE=ON Build type: None CFLAGS: -g -O2
-fdebug-prefix-map=/build/remmina-iuOrHL/remmina-1.3.3+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g Compiler: GNU, 8.2.0 Target architecture: ARM
答案1
答案可以在xrdp github上找到这里
基本上,xrdp:
服务器不发送,
GlyphCacheCapabilitySet
但没问题。服务器不应该进行字形缓存,除非客户端确实通告字形缓存功能。
作为 Remmina 用户的解决方法,打开有问题的连接配置文件的连接设置,转到“高级”并选择“字形缓存”和“放宽顺序检查”