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 客户端中指定的实际显示号或端口号必须与在目标计算机上通过 vncserver
命令提取的显示号或端口号相同。有关更多信息,请参见第 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
持续 VNC 会话分为以下两类:
14.4.1 使用 vncserver
启动的 VNC 会话 #
此类型的持续 VNC 会话在服务器上启动。该会话和其上启动的所有应用程序运行时不考虑客户端连接,直到会话被终止。永久会话访问受到两种可用口令类型的保护:
授予完全访问权限的普通口令或
可选仅查看口令,授予非交互(仅查看)访问权限。
一个会话可一次具有两种类型的多个客户端连接。
vncserver
启动永久 VNC 会话 #打开外壳,确保以拥有 VNC 会话的用户身份登录。
如果用于 VNC 会话的网络接口受防火墙保护,则需要手动打开防火墙中您的会话所使用的端口。如果启动多个会话,还可以选择打开一个端口范围。有关如何配置防火墙的细节,请参见第 23 章 “掩蔽和防火墙”。
vncserver
对显示器:1
使用端口5901
,对显示器:2
使用端口5902
,以此类推。对于永久会话,VNC 显示器和 X 显示器的编号通常都是相同的。要其他具有 1024x768 像素和颜色深度为 16 的会话,请输入以下命令:
vncserver -alwaysshared -geometry 1024x768 -depth 16
vncserver
命令会在您未指定时选取一个未使用的显示编号,并打印输出它的选择。有关更多选项,请参见man 1 vncserver
。
当您首次运行 vncserver
时,它会要求您输入一个口令,以获取会话的完全访问权限。如果需要,还可以提供口令用于会话的仅查看访问。
这里提供的口令还可供同一用户用来启动以后的会话。这些口令可以用 vncpasswd
命令更改。
确保使用长度够长的高强度口令(八个或更多字符)。不要共享这些口令。
要取消会话,请从 VNC 查看器中关闭在 VNC 会话内部运行的桌面环境,就像关闭一般本地 X 会话一样。
如果希望手动取消会话,请在 VNC 服务器上打开外壳,并务必以拥有要取消的 VNC 会话的用户身份登录。运行以下命令可取消在显示器 :1
上运行的会话:vncserver
-kill :1
14.4.1.1 配置永久 VNC 会话 #
通过编辑 $HOME/.vnc/xstartup
可以配置持续 VNC 会话。默认情况下,此外壳脚本会启动它启动时所处的同一个 GUI/窗口管理器。在 SUSE Linux Enterprise Server 中,此 GUI/窗口管理器为 GNOME 或 IceWM。要使用您选择的窗口管理器启动会话,请设置变量 WINDOWMANAGER
:
WINDOWMANAGER=gnome vncserver -geometry 1024x768 WINDOWMANAGER=icewm vncserver -geometry 1024x768
持续 VNC 会话在单个按用户配置中进行配置。由同一个用户启动的多个会话都使用相同的启动文件和口令文件。
14.4.2 使用 vncmanager
启动的 VNC 会话 #
启动
› › 。激活
。如果您打算在 Web 浏览器窗口中访问 VNC 会话,请激活
。如果需要,还可以选中
(例如,当网络接口配置为在外部区域中时)。如果有多个网络接口,请通过 将打开防火墙端口限制为特定的接口。单击
确认您的设置。如果不是所有需要的软件包都可使用,则需要批准安装缺少的软件包。
提示:重启动显示管理器YaST 对显示管理器设置进行了更改。您需要注销当前图形会话并重启动显示管理器,以使更改生效。
14.4.2.1 配置永久 VNC 会话 #
按过程 14.3 “启用永久 VNC 会话”中所述启用 VNC 会话管理后,便可以使用您喜欢的 VNC 查看器(例如 vncviewer
或 Remmina)正常连接到远程会话。此时将显示登录屏幕。登录后,您桌面环境的系统托盘中将出现“VNC”图标。单击该图标可打开 窗口。如果该图标未出现,或者您的桌面环境不支持图标放在系统托盘中,请手动运行 vncmanager-controller
。
有几个设置会影响 VNC 会话的行为:
这相当于一次性会话。其他用户将看不到此会话,它在您断开连接后即会终止。有关更多信息,请参考第 14.3 节 “在 VNC 服务器上配置一次性会话”。
其他用户可以看见此类会话,它在您断开连接后仍保持运行。
您可以在此处指定持续会话的名称,以便在重新连接时可以轻松识别它。
任何人不必使用用户身份凭证登录即可访问会话。
需要使用有效的用户名和口令登录后才能访问会话。该选项会在
文本框中列出有效的用户名。防止多个用户同时加入该会话。
允许多个用户同时加入持续会话。适合用于远程演示或培训会话。
单击
进行确认。14.4.2.2 加入永久 VNC 会话 #
按第 14.4.2.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 会发出“连接未加密!”消息来警告您)。
14.6 与 Wayland 的兼容性 #
远程管理 (VNC) 功能依赖于 X11,如果启用 Wayland,系统可能会显示空白屏幕。显示管理器必须配置为使用 X11 而不是 Wayland。对于 gdm,请编辑 /etc/gdm/custom.conf
。在 [daemon]
部分中,向配置文件添加 WaylandEnable=false
。登录时,用户还必须选择与 X11 兼容的会话。如果想要为 GNOME 去除 Wayland 选项,可以去除并锁定 gnome-session-wayland 软件包。