(我并不是在寻求诸如“停止使用 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 实现之间类似的安全协议不兼容问题。错误是:
那么,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)