gnome-remote-desktop:无法检索 RDP 用户名:未设置凭据 - 以及更多

yll*_*ate 5 remote-desktop gnome rdp networking remote-access

安装新的 Ubuntu 22.04 副本后,我尝试启用远程桌面:\n授权信息

\n

然后,我转到另一个工作站(使用 Microsoft RDC 和 Jump Desktop 尝试了 Windows 和 macOS)并尝试连接。当它在没有任何重要细节的情况下失败时,我跳进/var/log/syslogUbuntu 并发现了以下内容:

\n
Jul 21 02:04:16 HOSTNAME gnome-remote-de[3006]: Couldn\'t retrieve RDP username: Credentials not set\nJul 21 02:04:55 HOSTNAME gnome-remote-de[3006]: message repeated 6 times: [ Couldn\'t retrieve RDP username: Credentials not set]\n
Run Code Online (Sandbox Code Playgroud)\n

然后我打开系统Settings\xe2\x86\x92 Sharing\xe2\x86\x92Remote Desktop并遇到他们的钥匙串登录提示。身份验证后,我尝试再次通过 RDP 与之前的 RDC 连接。

\n

当我查看系统日志时,我观察到以下结果:\nJump Desktop:

\n
gnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [ERROR][com.winpr.sspi.NTLM] - NTLM_NEGOTIATE_MESSAGE::NegotiateFlags invalid flags 0x08e0080231, 0x00000205 required\ngnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_E_INVALID_TOKEN [0x80090308]\ngnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [WARN][com.winpr.sspi] - AcceptSecurityContext status SEC_E_INVALID_TOKEN [0x80090308]\ngnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [ERROR][com.freerdp.core.nla] - AcceptSecurityContext status SEC_E_INVALID_TOKEN [0x80090308]\ngnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [ERROR][com.freerdp.core.transport] - client authentication failure\ngnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [ERROR][com.freerdp.core.peer] - peer_recv_callback: CONNECTION_STATE_INITIAL - rdp_server_accept_nego() fail\ngnome-remote-desktop-daemon[3006]: [02:28:37:827] [3006:4409] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1\ngnome-remote-de[3006]: Unable to check file descriptor, closing connection\n
Run Code Online (Sandbox Code Playgroud)\n

微软远程桌面:

\n
gnome-remote-desktop-daemon[3006]: [02:29:09:352] [3006:4421] [ERROR][com.freerdp.core.transport] - BIO_read returned a system error 0: Success\ngnome-remote-desktop-daemon[3006]: [02:29:09:352] [3006:4421] [ERROR][com.freerdp.core] - transport_read_layer:freerdp_set_last_error_ex ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]\ngnome-remote-de[3006]: Unable to check file descriptor, closing connection\ngnome-remote-desktop-daemon[3006]: [02:29:20:233] [3006:4415] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_I_CONTINUE_NEEDED [0x00090312]\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_I_COMPLETE_NEEDED [0x00090313]\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [ERROR][com.winpr.sspi.NTLM] - Message Integrity Check (MIC) verification failed!\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [WARN][com.winpr.sspi] - CompleteAuthToken status SEC_E_MESSAGE_ALTERED [0x8009030F]\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [WARN][com.freerdp.core.nla] - CompleteAuthToken status SEC_E_MESSAGE_ALTERED [0x8009030F]\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [ERROR][com.freerdp.core.transport] - client authentication failure\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [ERROR][com.freerdp.core.peer] - peer_recv_callback: CONNECTION_STATE_INITIAL - rdp_server_accept_nego() fail\ngnome-remote-desktop-daemon[3006]: [02:29:20:234] [3006:4415] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1\ngnome-remote-de[3006]: Unable to check file descriptor, closing connection\ngnome-remote-desktop-daemon[3006]: [02:29:25:263] [3006:4433] [ERROR][com.freerdp.core.transport] - BIO_read returned a system error 0: Success\n
Run Code Online (Sandbox Code Playgroud)\n

这是使用上面屏幕截图中生成的“用户名”和“密码”。

\n

除了一开始似乎是一个明显的错误(即在 FreeRDP 尝试连接之前必须进行身份验证)之外,显然还有其他问题在起作用。

\n

任何人都知道这里可能发生什么和失败吗?

\n

小智 0

grd 的身份验证处理发生在 FreeRDP 中,因为 NLA 处理是在那里实现的。
NLA 有两个可能的提供程序 NTLM 和 Kerberos。FreeRDP 2.x 中仅实现了前一种。

NTLM 在底层使用 NTLM 哈希,在 FreeRDP 2.x 中,当密码包含非 ASCII 字符时,在创建哈希期间会出现错误,计算出错误的哈希。此问题已在https://github.com/FreeRDP/FreeRDP/commit/a23a24fe068c37d20c254fe393d4fe5d4c6ab31d
中修复(当记者不提供重现步骤时,实际上很难在上游找到这些错误,因此该问题是巧合发现的(参见https:// /github.com/FreeRDP/FreeRDP/issues/8599了解更多详细信息))。 该提交是 FreeRDP 2.10.0 版本的一部分。

您可以尝试从上游stable-2.0分支构建 FreeRDP 或者针对2.10.0标签构建 FreeRDP,然后再次尝试连接吗?

FreeRDP 2.10.0 更新不会包含在 Ubuntu 22.04 中,因为 Ubuntu SRU 团队拒绝包含 FreeRDP 稳定更新(Ubuntu 桌面团队也曾多次询问过 2.7.0 和 2.8 等旧更新)。 0 更新)。


Dan*_*n H 0

不确定您的问题是否与我的有关:我的 Remmina 客户端(在 Ubuntu 22.04 上)在连接到“屏幕共享”(在 Ubuntu 22.04 上)时会立即崩溃,其中 RDP 现在是默认的屏幕共享协议。

仅在提供有效密码后才会发生这种情况。

我的修复:将客户端和屏幕共享主机的“显示服务器”从 Wayland 更改为 Xorg...请参阅以下内容:

如何在 Ubuntu 22.04 上从 Wayland 显示服务器切换到 Xorg X11

奖励:这也解决了我在尝试使用存档管理器将文件从 zip 文件中拖出时遇到的损坏的拖放问题。