Remmina 连接到 Ubuntu 18.10,但 TigerVNC 查看器显示“没有匹配的安全类型”错误

Remmina 连接到 Ubuntu 18.10,但 TigerVNC 查看器显示“没有匹配的安全类型”错误

(我并不是在寻求诸如“停止使用 VNC,因为它不安全”之类的答案,也不需要推荐不同 VNC 实现的答案,因为我特别希望 TigerVNC 能够正常运行)。

我需要使用 TigerVNC 从 Ubuntu 18.10 笔记本电脑显示和控制 Ubuntu 18.10 桌面。两台机器最近都升级到了 18.10。

我已按照以下说明在桌面上启用了桌面共享 https://askubuntu.com/a/1088328但有例外:当我有不是执行以下命令:

gsettings set org.gnome.Vino require-encryption false

它不起作用(见下文)。但是当我gsettings 在桌面上使用该命令,然后我会得到一个输入 vnc 密码的提示,输入密码后,我就可以控制桌面了。所以最终,我知道一定是修复,但我特别需要知道为什么需要这样做(请参阅下面的 remmina 用法)。我在网上搜索都没有找到原因。

在台式机上,共享设置如下:

桌面上的共享设置

注意:我可以成功使用 remmina 工具,使用 VNC 设置,连接到台式机并显示它,没有gsettings在台式机上使用上述设置。但是,当我使用 TigerVNC 类型的 vncviewer 时,使用此命令:

vncviewer thedesk.local:0

(其中 thedesk.local 是 Ubuntu 桌面机器),我得到一个弹出窗口:

No matching security types

shell 中的输出显示:

$ vncviewer thedesk.local:0

TigerVNC Viewer 64-bit v1.9.0
Built on: 2018-07-29 13:31
Copyright (C) 1999-2018 TigerVNC Team and many others (see README.rst)
See http://www.tigervnc.org for information on TigerVNC.

Sun May 26 07:10:29 2019
 DecodeManager: Detected 8 CPU core(s)
 DecodeManager: Creating 4 decoder thread(s)

Sun May 26 07:10:30 2019
 CConn:       connected to host thedesk.local port 5900

Sun May 26 07:10:31 2019
 CConnection: Server supports RFB protocol version 3.7
 CConnection: Using RFB protocol version 3.7
 CConnection: No matching security types
 CConn:       No matching security types

在 Ubuntu 18.10 笔记本电脑和台式机上,我都安装了这些类似 vnc 的软件包版本,apt remove并将所有其他版本的“vnc”客户端/服务器都安装了,以避免与 Linux“替代”机制混淆:

$ dpkg --list *vnc* | grep '^i'
ii  libvncclient1:amd64                            0.9.11+dfsg-1.1ubuntu0.1     amd64                        API to write one's own VNC server - client library
ii  remmina-plugin-vnc:amd64                       1.2.31.4+dfsg-1ubuntu1       amd64                        VNC plugin for Remmina
ii  tigervnc-common                                1.9.0+dfsg-1                 amd64                        Virtual network computing; Common software needed by servers
ii  tigervnc-standalone-server                     1.9.0+dfsg-1                 amd64                        Standalone virtual network computing server
ii  tigervnc-viewer                                1.9.0+dfsg-1                 amd64                        Virtual network computing client for X
$ vncviewer --version |& head -5

TigerVNC Viewer 64-bit v1.9.0
Built on: 2018-07-29 13:31
Copyright (C) 1999-2018 TigerVNC Team and many others (see README.rst)
See http://www.tigervnc.org for information on TigerVNC.
$ 

remmina --version弹出一个对话框,内容如下:

1.2.31.4 (git n/a)

涉及 remmina 的原因只是为了表明某些客户端能够与 Ubuntu 桌面通信,但不能与 TigerVNC 通信。我尝试从运行 Raspbian 的 Raspberry Pi 3 B+ 连接到 thedesk.local,并得到了不同的错误,但似乎仍然涉及 VNC 实现之间类似的安全协议不兼容问题。错误是:

rpi vnc 尝试

那么,remmina 为在 thedesk.local 上的显示器 :0 上运行的 X 服务器(或 VNC 服务器?)提供了什么,而 TigerVNC 查看器客户端(或在 Raspbian 下运行的 RealVNC 客户端)没有提供什么?

我的网络搜索显示如下结果 https://ubuntuforums.org/showthread.php?t=2384046它会给出“你为什么不改用‘X’?”类型的响应,这是一个合理的观察。但我特别想找出为什么我必须使用更改gsettings才能让 TigerVNC 查看器弹出提示,而 remmina 不需要它。(当我需要安全性时,我已经知道如何通过 SSH 隧道传输流量。)

答案1

显然,VNC 有两种完全不同的加密协议。根据“网络安全评估:了解你的网络”,表7-31有:

- type 18: TLS authentication, used by Ubuntu Linux distributions
- type 19: TLS authentication, used by the Win32 VeNCrypt package

(不确定为什么书中在这里明确提到类型 18 为“Ubuntu”)。

维诺(Gnome 桌面共享应用程序)使用LibVNC服务器作为后端。还有 LibVNCServer仅支持类型 18。Remmina 也使用 LibVNCServer,因此它也支持类型 18。顺便说一句,由于 Remmina 是一个 VNC客户,我猜它甚至支持类型 19。

TigerVNC另一方面显然不支持类型 18支持类型 19;至少源代码是这么暗示的。

这两个工具之所以能够真正通信,gsettings set org.gnome.Vino require-encryption false是因为该命令关闭了 Vino 中的加密,因此 TigerVNC 将只使用未加密的连接(这是这两个工具都支持的协议)。

要真正解决这个问题,LibVNCServer 需要添加对类型 19(VeNCrypt)的支持,或者 TigerVNC 需要添加对类型 18 的支持。我不知道这两个项目是否正在进行此类努力。

附注:我猜整个情况变得更加复杂,因为这两个方案都被称为“TLS”,并且实际上在底层使用 TLS,但仍然不兼容。对于类型 18,甚至没有实际的姓名; 并输入 19/VeNCrypt 本身有九种不同的亚型针对不同的加密方法。根据我的经验,这整个混乱局面非常具有代表性,代表了 VNC 协议。

答案2

2 个月前的话题,因此您可能已经找到答案了。

原生 VNC 共享在原版 Ubuntu 18.04 LTS 上运行

  • 启用共享
  • 设置 VNC 密码
  • 设置防火墙规则(或完全禁用 ufw,具体取决于您的使用情况)
  • 以登录用户身份运行此程序(不需要 sudo)gsettings set org.gnome.Vino require-encryption false

答案3

2022 年更新:

Vino 已重命名为 gnome-remote-desktop,自 focal (20.04) 以来已包含在 Ubuntu 中。gsettings 中的新位置已更改,禁用加密的新设置是gsettings set org.gnome.desktop.remote-desktop.vnc encryption \[\'none\'\]

答案4

支持奥利弗的答案/usr/lib/vino/vino-server &,如果我从 CLI(在终端 #1 中)运行,则所有输出都会在那里看到。然后gsettings set org.gnome.Vino require-encryption false从另一个终端(#2)执行会在 #1 中产生以下输出:

30/03/2022 10:17:52 Clearing securityTypes
30/03/2022 10:17:52 Clearing authTypes
30/03/2022 10:17:52 Advertising security type: 'TLS' (18)
30/03/2022 10:17:52 Advertising authentication type: 'No Authentication' (1)
30/03/2022 10:17:52 Advertising security type: 'No Authentication' (1)

相关内容