虚拟网络计算 (VNC) 使您能够通过图形桌面访问远程计算机,并运行远程图形应用程序。VNC 是平台无关的,可以从任何操作系统访问远程计算机。本章介绍了如何使用桌面客户端 vncviewer 和 Remmina 连接到 VNC 服务器,以及如何操作 VNC 服务器。
openSUSE Leap 支持两种不同类型的 VNC 会话:一种是““实时”” 会话,只要客户端保持 VNC 连接,就会一直存在,另一种是持久会话,直到显式终止才会““实时””。
VNC 服务器可以在不同的端口上同时提供两种类型的会话,但无法将开放会话从一种类型转换为另一种类型。
只有使用支持 XDMCP 协议的显示管理器,机器才能可靠地接受 VNC 连接。虽然 `gdm`、`lxdm` 或 `lightdm` 支持 XDMCP,但 KDE 5 默认显示管理器 `sddm` 不支持它。更改默认显示管理器时,请记住注销当前 X 会话,并使用以下命令重新启动显示管理器:
> sudo systemctl restart xdm.service要连接到服务器提供的 VNC 服务,需要一个客户端。在 openSUSE Leap 中默认客户端是 `vncviewer`,由 `tigervnc` 包提供。
要启动 VNC 查看器并启动与服务器的会话,请使用以下命令:
> vncviewer jupiter.example.com:1除了 VNC 显示编号,还可以使用双冒号指定端口号:
> vncviewer jupiter.example.com::5901在不指定 `--listen` 或要连接的主机的情况下运行 `vncviewer` 时,它会显示一个窗口,要求输入连接详细信息。将主机输入到 字段中,如 第 4.1.1 节,“使用 vncviewer CLI 连接” 中所述,然后单击 。
Remmina 是一个现代且功能丰富的远程桌面客户端。它支持多种访问方法,例如 VNC、SSH、RDP 和 Spice。
要使用 Remmina,请验证您的系统上是否已安装 remmina 包,如果未安装,请安装它。请记住也安装 Remmina 的 VNC 插件。
# zypper in remmina remmina-plugin-vnc通过输入 remmina 命令来运行 Remmina。
主应用程序窗口显示已存储的远程会话列表。您可以在此处添加和保存新的远程会话,快速启动一个无需保存的会话,启动之前保存的会话,或设置 Remmina 的全局首选项。
要添加和保存新的远程会话,请单击主窗口左上角的
。将打开 窗口。
填写指定您新添加的远程会话配置文件的字段。最重要的字段是:
配置文件的名称。它将列在主窗口中。
连接到远程会话时使用的协议,例如 VNC。
远程服务器的 IP 或 DNS 地址和显示编号。
用于远程身份验证的凭据。如果不需要身份验证,请留空。
根据您的连接速度和质量选择最佳选项。
选择 选项卡以输入更具体的设置。
如果客户端和远程服务器之间的通信未加密,请激活 ,否则连接将失败。
选择 选项卡以获取高级 SSH 隧道和身份验证选项。
使用 确认。您的新配置文件现在列在主窗口中。
您可以启动之前保存的会话,也可以快速启动远程会话而无需保存连接详细信息。
要快速启动远程会话而无需添加和保存连接详细信息,请使用主窗口顶部的下拉框和文本框。
从下拉列表中选择通信协议,例如 “VNC”,然后输入 VNC 服务器 DNS 或 IP 地址,后跟冒号和显示编号,然后按 Enter 确认。
要 编辑 保存的远程会话,请右键单击 Remmina 主窗口中的会话名称,然后选择 。有关相关字段的说明,请参阅第 4.2.3 节,“添加远程会话”。
要 复制 保存的远程会话,请右键单击 Remmina 主窗口中的会话名称,然后选择 。在 窗口中,更改配置文件的名称,可选地调整相关选项,然后使用 确认。
要 删除 保存的远程会话,请右键单击 Remmina 主窗口中的会话名称,然后选择 。在下一个对话框中确认 。
如果您需要从命令行或从批处理文件打开远程会话而无需先打开主应用程序窗口,请使用以下语法:
> remmina -c profile_name.remminaRemmina 的配置文件存储在您的主目录中的 .local/share/remmina/ 目录中。要确定属于您想要打开的会话的配置文件,请运行 Remmina,单击主窗口中的会话名称,然后在窗口底部的状态行中读取配置文件路径。
在 Remmina 未运行时,您可以将配置文件重命名为更合理的文件名,例如 sle15.remmina。您甚至可以将配置文件复制到自定义目录,并使用 remmina -c 命令从那里运行它。
单次会话由远程客户端启动。它在服务器上启动图形登录屏幕。这样您可以选择启动会话的用户,如果登录管理器支持,还可以选择桌面环境。当您取消客户端与此类 VNC 会话的连接时,在该会话中启动的所有应用程序也会被终止。单次 VNC 会话无法共享,但可以在单个主机上同时拥有多个会话。
启动 › › 。
选中 。
如果计划在 Web 浏览器窗口中访问 VNC 会话,请激活 。
如果需要,还选中 (例如,当您的网络接口配置为处于外部区域时)。如果您有多个网络接口,请通过 将打开防火墙端口限制为特定的接口。
使用 确认您的设置。
如果尚未提供所有必需的软件包,则需要批准安装缺少的软件包。
YaST 会更改显示管理器设置。您需要注销当前的图形会话并重新启动显示管理器,才能使更改生效。
在 openSUSE Leap 上,默认配置会以 1024x768 像素的分辨率和 16 位色深提供会话。会话在端口 5901 上可用,供 “常规” VNC 查看器(相当于 VNC 显示 1)使用,并在端口 5801 上可用,供 Web 浏览器使用。
其他配置可以在不同的端口上提供,请参阅 第 4.3.3 节,“配置一次性 VNC 会话”。
在一次性会话中,VNC 显示编号和 X 显示编号是独立的。每个服务器支持的配置都会手动分配一个 VNC 显示编号(例如,上面示例中的 :1)。每当使用其中一种配置启动 VNC 会话时,它都会自动获得一个空闲的 X 显示编号。
默认情况下,VNC 客户端和服务器都尝试通过安装后生成的自签名 SSL 证书安全地通信。您可以使用默认证书,也可以将其替换为自己的证书。在使用自签名证书时,需要在第一次连接之前确认其签名——在 VNC 查看器和 Web 浏览器中都需要确认。
某些 VNC 客户端拒绝通过默认自签名证书建立安全连接。例如,Vinagre 客户端会针对 GnuTLS 全局信任存储验证证书,如果证书是自签名的,则会失败。在这种情况下,请使用除 x509 之外的其他加密方法,或者为 VNC 服务器生成一个正确签名的证书并将其导入到客户端的系统信任存储中。
要连接到一次性 VNC 会话,必须安装一个 VNC 查看器,请参阅 第 4.1 节,“vncviewer 客户端”。或者,使用支持 JavaScript 的 Web 浏览器通过输入以下 URL 查看 VNC 会话:http://jupiter.example.com:5801
如果您不需要或不想修改默认配置,可以跳过此章节。
一次性 VNC 会话通过 systemd 套接字 xvnc.socket 启动。默认情况下,它提供六个配置块:三个用于 VNC 查看器(vnc1 到 vnc3),三个用于提供 JavaScript 客户端(vnchttpd1 到 vnchttpd3)。默认情况下,只有 vnc1 和 vnchttpd1 处于活动状态。
要在启动时激活 VNC 服务器套接字,请运行以下命令
>sudosystemctl enable xvnc.socket
要立即启动套接字,请运行
>sudosystemctl start xvnc.socket
Xvnc 服务器可以通过 server_args 选项进行配置。有关选项列表,请参阅 Xvnc --help。
在添加自定义配置时,请确保它们不使用已被其他配置、其他服务或同一主机上现有的持久 VNC 会话使用的端口。
通过输入以下命令激活配置更改
>sudosystemctl reload xvnc.socket
在按照 过程 4.1,“启用一次性 VNC 会话” 描述激活远程管理时,防火墙中将打开端口 5801 和 5901。如果提供 VNC 会话的网络接口受到防火墙的保护,则需要在激活 VNC 会话的附加端口时手动打开相应的端口。有关说明,请参阅 “安全和加固指南”书籍,第 23 章“伪装和防火墙”。
持久会话可以从多个客户端同时访问。这非常适合演示目的,其中一个客户端具有完全访问权限,而所有其他客户端只有查看权限。另一个用例是培训课程,培训师可能需要访问学员的桌面。
要连接到持久 VNC 会话,必须安装一个 VNC 查看器。有关更多详细信息,请参阅 第 4.1 节,“vncviewer 客户端”。或者,使用支持 JavaScript 的 Web 浏览器通过输入以下 URL 查看 VNC 会话:http://jupiter.example.com:5801。
启动 › › 。
激活 。
如果计划在 Web 浏览器窗口中访问 VNC 会话,请激活 。
如果需要,还选中 (例如,当您的网络接口配置为处于外部区域时)。如果您有多个网络接口,请通过 将打开防火墙端口限制为特定的接口。
使用 确认您的设置。
如果尚未提供所有必需的软件包,则需要批准安装缺少的软件包。
YaST 会更改显示管理器设置。您需要注销当前的图形会话并重新启动显示管理器,才能使更改生效。
在按照 过程 4.2,“启用持久 VNC 会话” 启用 VNC 会话管理后,通常可以使用您喜欢的 VNC 查看器(例如 vncviewer 或 Remmina)连接到远程会话。登录后,“VNC” 图标会出现在您的桌面环境的系统托盘中。单击该图标以打开 窗口。如果您的桌面环境不支持系统托盘中的图标,请手动运行 vncmanager-controller。
有几个设置会影响 VNC 会话的行为
这等效于一次性会话。它对其他人不可见,并在您断开连接后终止。有关更多信息,请参阅 第 4.3 节,“配置 VNC 服务器上的一次性会话”。
会话对其他用户可见,即使您断开连接后仍会继续运行。
指定持久会话的名称,以便在重新连接时轻松识别。
会话可以自由访问,无需使用用户凭据登录。
您需要使用有效的用户名和密码登录才能访问会话。在 文本框中列出有效的用户名。
防止多个用户同时加入会话。
允许多个用户同时加入持久会话。适用于远程演示或培训课程。
使用 确认。
在按照 第 4.4.1.1 节,“配置持久 VNC 会话” 描述设置持久 VNC 会话后,可以使用您的 VNC 查看器加入它。在您的 VNC 客户端连接到服务器后,系统会提示您选择是创建新会话还是加入现有会话
单击现有会话的名称后,根据持久会话设置,系统可能会要求您提供登录凭据。
如果 VNC 服务器设置正确,则 VNC 服务器和客户端之间的所有通信都将被加密。身份验证发生在会话开始时;实际的数据传输仅在之后开始。
无论是对于一次性 VNC 会话还是持久 VNC 会话,安全选项都通过位于 server_args 行上的 /usr/bin/Xvnc 命令的 -securitytypes 参数进行配置。 -securitytypes 参数选择身份验证方法和加密。它具有以下选项
无身份验证。
使用自定义密码进行身份验证。
使用 PAM 验证用户密码进行身份验证。
无加密。
匿名 TLS 加密。所有内容都经过加密,但未验证远程主机。因此,您可以防止被动攻击者,但不能防止中间人攻击者。
使用证书的 TLS 加密。如果您使用自签名证书,则会在第一次连接时要求您验证它。在后续连接中,只有在证书更改时才会发出警告。因此,您可以防止所有内容,除了第一次连接时的中间人攻击(类似于典型的 SSH 用法)。如果您使用与机器名称匹配的证书颁发机构签名的证书,则可以获得完整的安全性(类似于典型的 HTTPS 用法)。
某些 VNC 客户端拒绝通过默认自签名证书建立安全连接。例如,Vinagre 客户端会针对 GnuTLS 全局信任存储验证证书,如果证书是自签名的,则会失败。在这种情况下,请使用除 x509 之外的其他加密方法,或者为 VNC 服务器生成一个正确签名的证书并将其导入到客户端的系统信任存储中。
使用基于 X509 的加密时,需要使用 -X509Cert 和 -X509Key 选项指定 X509 证书和密钥的路径。
如果选择用逗号分隔的多个安全类型,则将使用客户端和服务器都支持并允许的第一个类型。这样,您就可以在服务器上配置机会性加密。如果您需要支持不支持加密的 VNC 客户端,这将很有用。
在客户端上,您还可以指定允许的安全类型,以防止降级攻击,如果您正在连接到您知道已启用加密的服务器(尽管我们的 vncviewer 会在那种情况下向您发出 Connection not encrypted! 消息)。