14 使用 VNC 的远程图形会话 #
利用虚拟网络计算 (VNC) 可以通过图形桌面来访问远程计算机,并运行远程图形应用程序。VNC 与平台无关,可以从任何操作系统访问远程计算机。本章介绍如何使用桌面客户端 vncviewer 和 Remmina 连接到 VNC 服务器,以及如何操作 VNC 服务器。
SUSE Linux Enterprise Server 支持两种不同类型的 VNC 会话:一次性会话,在客户端 VNC 连接持续期间处于“活跃”状态;永久会话,在被明确终止前始终处于“活跃”状态。
VNC 服务器可在不同端口上同时提供两种会话,但打开的会话不能从一种类型转换为另一种类型。
14.1 vncviewer
客户端 #
要连接到服务器提供的 VNC 服务,需要使用客户端。SUSE Linux Enterprise Server 中的默认客户端是 tigervnc
软件包提供的 vncviewer
。
14.1.1 使用 vncviewer CLI 进行连接 #
要启动 VNC 查看器并发起与服务器的会话,请使用以下命令:
>
vncviewer jupiter.example.com:1
若不使用 VNC 显示器编号,您也可以指定带两个冒号的端口号:
>
vncviewer jupiter.example.com::5901
您在 VNC 客户端中指定的实际显示号或端口号必须与您在目标计算机上配置 VNC 服务器时选择的显示号或端口号相同。有关更多信息,请参见第 14.4 节 “配置永久 VNC 服务器会话”。
14.1.2 使用 vncviewer GUI 进行连接 #
如果在不指定 --listen
或要连接的主机的情况下运行 vncviewer
,它会显示一个窗口,要求您输入连接细节。按第 14.1.1 节 “使用 vncviewer CLI 进行连接”中所述在 字段中输入主机,然后单击 。
14.1.3 未加密连接通知 #
VNC 协议支持不同类型的加密连接,请不要将这些连接与口令身份验证相混淆。如果某个连接未使用 TLS,VNC 查看器的窗口标题中可能会出现“(连接未加密!)”文本。
14.2 Remmina:远程桌面客户端 #
Remmina 是功能丰富的新式远程桌面客户端。它支持多种访问方法,例如 VNC、SSH、RDP 和 Spice。
14.2.1 安装 #
要使用 Remmina,请校验系统上是否安装了 remmina 软件包,如未安装,请加以安装。记得还要安装适用于 Remmina 的 VNC 插件:
#
zypper in remmina remmina-plugin-vnc
14.2.2 主窗口 #
通过输入 remmina
命令运行 Remmina。
该应用程序主窗口显示存储的远程会话列表。在这里,您可以添加和保存新远程会话、快速启动新会话而不保存、启动以前保存的会话,或设置 Remmina 的全局首选项。
14.2.3 添加远程会话 #
要添加和保存新远程会话,请单击主窗口左上方的 。 窗口即会打开。
在用于指定新添加的远程会话配置文件的字段中填写信息。最重要的技术包括:
- 名称
配置文件的名称,将列于主窗口中。
- 协议
连接远程会话时要使用的协议,例如 VNC。
- 服务器
远程服务器的 IP 或 DNS 地址和显示号。
- 用户名、口令
要用于进行远程身份验证的身份凭证。保留为空表示不进行身份验证。
- 色深、质量
根据连接速度和质量选择最佳选项。
选择
选项卡可输入更具体的设置。如果客户端与远程服务器之间的通讯不加密,请激活
,否则连接会失败。选择
选项卡可显示高级 SSH 隧道通讯进程和身份验证选项。单击
进行确认。新配置文件现在即会列在主窗口中。14.2.4 启动远程会话 #
您可以启动以前保存的会话,也可以快速启动一个远程会话而不保存连接细节。
14.2.4.1 快速启动远程会话 #
要快速启动远程会话而不添加并保存连接细节,请使用主窗口顶部的下拉框和文本框。
从下拉列表中选择通讯协议(例如 “VNC”),然后输入 VNC 服务器 DNS 或 IP 地址,后跟一个冒号和显示号,然后按 Enter 确认。
14.2.4.2 打开保存的远程会话 #
要打开特定的远程会话,请从会话列表中双击该会话。
14.2.4.3 远程会话窗口 #
远程会话会在新窗口的标签中打开。每个标签托管一个会话。窗口左侧的工具栏可用来管理窗口/会话。例如,切换全屏模式、调整窗口大小以适应会话的显示大小、将特定按键发送到会话、对会话进行屏幕截图,或设置图像质量。
14.2.5 编辑、复制和删除保存的会话 #
要编辑保存的某个远程会话,请在 Remmina 的主窗口中右键单击其名称,然后选择 。有关相关字段的说明,请参见第 14.2.3 节 “添加远程会话”。
要复制保存的某个远程会话,请在 Remmina 的主窗口中右键单击其名称,然后选择 。在 窗口中,更改配置文件的名称,(可选)调整相关选项,然后单击 确认。
要删除保存的某个远程会话,请在 Remmina 的主窗口中右键单击其名称,然后选择 。在下一个对话框中,单击 确认。
14.2.6 从命令行运行远程会话 #
如果您需要从命令行或使用批处理文件打开远程会话,而不先打开应用程序主窗口,请使用以下语法:
>
remmina -c profile_name.remmina
Remmina 的配置文件存储在您主目录下的 .local/share/remmina/
目录中。要确定哪个配置文件属于您要打开的会话,请运行 Remmina,在主窗口中单击会话名称,然后在窗口底部的状态行中查看配置文件的路径。
如果 Remmina 未在运行,您可以将配置文件重命名为更合理的文件名,例如 sle15.remmina
。您甚至可以将配置文件复制到自定义目录,并从该目录中使用 remmina -c
命令来运行它。
14.3 在 VNC 服务器上配置一次性会话 #
一次性会话由远程客户端启动。它在服务器上启动图形登录屏幕。这样您可以选择启动会话的用户,并且如果登录管理器支持,还可以选择桌面环境。取消与此类 VNC 会话的客户端连接时,此会话中启动的所有应用程序也会终止。一次性 VNC 会话不能共享,但可以在一台主机上同时存在多个会话。
启动
› › 。选中
。如果您打算在 Web 浏览器窗口中访问 VNC 会话,请激活
。如果需要,还可以选中
(例如,当网络接口配置为在外部区域中时)。如果有多个网络接口,请通过 将打开防火墙端口限制为特定的接口。单击
确认您的设置。如果不是所有需要的软件包都可使用,则需要批准安装缺少的软件包。
提示:重启动显示管理器YaST 对显示管理器设置进行了更改。您需要注销当前图形会话并重启动显示管理器,以使更改生效。
14.3.1 可用配置 #
SUSE Linux Enterprise Server 上的默认配置对会话使用 1024x768 像素(颜色深度 16 位)。在端口 5901
(针对“普通”VNC 查看器,等同于 VNC 显示器 1
)和端口 5801
(针对 Web 浏览器)上可以使用会话。
其他配置可在不同端口上使用,请参见第 14.3.3 节 “配置一次性 VNC 会话”。
VNC 显示器编号和 X 显示器编号是独立于一次性会话的。VNC 显示器编号手动指派给服务器支持的每个配置(如上例中的 :1)。只要 VNC 会话启动时带任一配置,就会自动获取可用 X 显示器编号。
默认情况下,VNC 客户端与服务器将尝试通过安装后生成的自我签名 SSL 证书安全通讯。您可以使用默认的证书,也可以将它替换为您自己的证书。使用自我签名证书时,需要在首次连接之前,在 VNC 查看器和 Web 浏览器中确认证书的签名。
某些 VNC 客户端拒绝通过默认的自我签名证书建立安全连接。例如,Vinagre 客户端会对照 GnuTLS 全局可信证书存储区验证证书,如果证书是自我签名证书,则不会建立连接。在这种情况下,请使用 x509
以外的加密方法,或者为 VNC 服务器生成正确签名的证书,并将其导入到客户端的系统可信证书存储区。
14.3.2 启动一次性 VNC 会话 #
要连接一次性 VNC 会话,必须安装 VNC 查看器,另请参见第 14.1 节 “vncviewer
客户端”。或者,可在支持 JavaScript 的 Web 浏览器中输入以下 URL 来查看 VNC 会话:http://jupiter.example.com:5801
14.3.3 配置一次性 VNC 会话 #
如果不需要或想修改默认配置,则可以跳过此部分。
一次性 VNC 会话通过 systemd
套接字 xvnc.socket
启动。该套接字默认提供六个配置块:三个用于 VNC 查看器(vnc1
到 vnc3
),另外三个用于 JavaScript 客户端(vnchttpd1
到 vnchttpd3
)。默认情况下,只有 vnc1
和 vnchttpd1
是活动的。
要在引导时激活 VNC 服务器套接字,请运行以下命令:
>
sudo
systemctl enable xvnc.socket
要立即启动套接字,请运行:
>
sudo
systemctl start xvnc.socket
Xvnc
服务器可通过 server_args
选项配置。有关选项列表,请参见 Xvnc --help
。
当添加自定义配置时,请确保它们未使用已由其他配置、其他服务或同一主机上的现有永久 VNC 会话使用的端口。
通过输入以下命令激活配置更改:
>
sudo
systemctl reload xvnc.socket
按照过程 14.1 “启用一次性 VNC 会话”中所述激活远程管理时,端口 5801
和 5901
将在防火墙中打开。如果用于 VNC 会话的网络接口受防火墙保护,则为 VNC 会话激活更多端口时,需要手动打开各个端口。有关说明,请参见第 23 章 “伪装和防火墙”。
14.4 配置永久 VNC 服务器会话 #
可以从多个客户端同时访问持续会话。为了便于演示,我们选择一个较为理想的配置,一个客户端具有完全访问权限,所有其他客户端只具有查看访问权限。另一个用例是:教员可能需要在其中访问学员桌面的培训会话。
要连接持续 VNC 会话,必须安装 VNC 查看器。有关更多细节,请参见第 14.1 节 “vncviewer
客户端”。或者,可在支持 JavaScript 的 Web 浏览器中输入以下 URL 来查看 VNC 会话:http://jupiter.example.com:5801
。
14.4.1 使用 vncmanager
启动的 VNC 会话 #
启动
› › 。激活
。如果您打算在 Web 浏览器窗口中访问 VNC 会话,请激活
。如果需要,还可以选中
(例如,当网络接口配置为在外部区域中时)。如果有多个网络接口,请通过 将打开防火墙端口限制为特定的接口。单击
确认您的设置。如果不是所有需要的软件包都可使用,则需要批准安装缺少的软件包。
提示:重启动显示管理器YaST 对显示管理器设置进行了更改。您需要注销当前图形会话并重启动显示管理器,以使更改生效。
14.4.1.1 配置永久 VNC 会话 #
按过程 14.2 “启用永久 VNC 会话”中所述启用 VNC 会话管理后,便可以使用您喜欢的 VNC 查看器(例如 vncviewer
或 Remmina)正常连接到远程会话。登录后,您桌面环境的系统托盘中会出现“VNC”图标。单击该图标可打开 窗口。如果您的桌面环境不支持图标放在系统托盘中,请手动运行 vncmanager-controller
。
有几个设置会影响 VNC 会话的行为:
这相当于一次性会话。其他用户将看不到此会话,它在您断开连接后即会终止。有关更多信息,请参考第 14.3 节 “在 VNC 服务器上配置一次性会话”。
其他用户可以看见此类会话,它在您断开连接后仍保持运行。
请指定持续会话的名称,以便在重新连接时可以轻松识别它。
任何人不必提供用户身份凭证登录即可访问会话。
需要使用有效的用户名和口令登录后才能访问会话。该选项会在
文本框中列出有效的用户名。防止多个用户同时加入该会话。
允许多个用户同时加入持续会话。适合用于远程演示或培训会话。
单击
进行确认。14.4.1.2 加入永久 VNC 会话 #
按第 14.4.1.1 节 “配置永久 VNC 会话”中所述设置持续 VNC 会话后,可通过 VNC 查看器加入它。当 VNC 客户端连接到服务器后,系统会提示您选择是要创建新会话还是加入现有会话:
当您单击现有会话的名称后,系统可能要求您输入登录身份凭证,具体取决于持续会话设置。
14.5 在 VNC 服务器上配置加密 #
如果 VNC 服务器设置正确,则 VNC 服务器与客户端之间的所有通讯都会被加密。身份验证在会话开始时进行;实际的数据传输在身份验证后开始。
无论是一次性还是持续 VNC 会话,安全性选项都通过 server_args
一行中 /usr/bin/Xvnc
命令的 -securitytypes
参数来配置。-securitytypes
参数用于选择身份验证和加密方式。它的选项如下:
- None、TLSNone、X509None
无身份验证。
- VncAuth、TLSVnc、X509Vnc
身份验证使用自定义口令。
- Plain、TLSPlain、X509Plain
身份验证使用 PAM 来验证用户的口令。
- None、vncAuth、plain
不加密。
- TLSNone、TLSVnc、TLSPlain
匿名 TLS 加密。对所有内容加密,但不校验远程主机。因此,您可以防护被动攻击者,但不能防御中间人攻击者。
- X509None、X509Vnc、X509Plain
使用证书进行 TLS 加密。如果使用自我签名证书,则在第一次连接时,系统将要求您校验证书。在以后的连接中,仅当证书有变动时,系统才会向您发出警告。因此,在第一次连接时,您可以防御中间人攻击之外的所有其他攻击(类似于使用典型的 SSH)。如果使用由证书颁发机构签名且与计算机名称匹配的证书,您的安全将得到全面保障(类似于使用典型的 HTTPS)。
提示某些 VNC 客户端拒绝通过默认的自我签名证书建立安全连接。例如,Vinagre 客户端会对照 GnuTLS 全局可信证书存储区验证证书,如果证书是自我签名证书,则不会建立连接。在这种情况下,请使用
x509
以外的加密方法,或者为 VNC 服务器生成正确签名的证书,并将其导入到客户端的系统可信证书存储区。提示:证书和密钥的路径如果使用基于 X509 的加密,需要通过
-X509Cert
和-X509Key
选项指定 X509 证书和密钥的路径。
如果您选择多种安全性类型(用逗号分隔),将会使用客户端和服务器都支持且允许的第一种安全性。如此,您便可在服务器上配置随机加密。如果您需要支持不支持加密的 VNC 客户端,此功能将十分有用。
在客户端上,您也可以指定允许的安全性类型,以防在您连接到已知启用了加密的服务器时遭到降级攻击(虽然在该情况下,我们的 vncviewer 会发出“Connection not encrypted!
”消息来警告您)。
14.6 与 Wayland 的兼容性 #
远程管理 (VNC) 功能依赖于 X11,如果启用 Wayland,系统可能会显示空白屏幕。显示管理器必须配置为使用 X11 而不是 Wayland。对于 gdm,请编辑 /etc/gdm/custom.conf
。在 [daemon]
部分中,向配置文件添加 WaylandEnable=false
。登录时,用户还必须选择与 X11 兼容的会话。如果想要为 GNOME 去除 Wayland 选项,可以去除并锁定 gnome-session-wayland 软件包。