跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

4 使用 VNC 进行远程图形会话 编辑源文件

摘要

虚拟网络计算 (VNC) 使您能够通过图形桌面访问远程计算机,并运行远程图形应用程序。VNC 是平台无关的,可以从任何操作系统访问远程计算机。本章介绍了如何使用桌面客户端 vncviewer 和 Remmina 连接到 VNC 服务器,以及如何操作 VNC 服务器。

openSUSE Leap 支持两种不同类型的 VNC 会话:一种是“实时” 会话,只要客户端保持 VNC 连接,就会一直存在,另一种是持久会话,直到显式终止才会“实时”。

VNC 服务器可以在不同的端口上同时提供两种类型的会话,但无法将开放会话从一种类型转换为另一种类型。

4.1 `vncviewer` 客户端 编辑源文件

Important
重要提示:支持的显示管理器

只有使用支持 XDMCP 协议的显示管理器,机器才能可靠地接受 VNC 连接。虽然 `gdm`、`lxdm` 或 `lightdm` 支持 XDMCP,但 KDE 5 默认显示管理器 `sddm` 不支持它。更改默认显示管理器时,请记住注销当前 X 会话,并使用以下命令重新启动显示管理器:

> sudo systemctl restart xdm.service

要连接到服务器提供的 VNC 服务,需要一个客户端。在 openSUSE Leap 中默认客户端是 `vncviewer`,由 `tigervnc` 包提供。

4.1.1 使用 vncviewer CLI 连接 编辑源文件

要启动 VNC 查看器并启动与服务器的会话,请使用以下命令:

> vncviewer jupiter.example.com:1

除了 VNC 显示编号,还可以使用双冒号指定端口号:

> vncviewer jupiter.example.com::5901
Note
注意:显示和端口号

VNC 客户端中指定的实际显示或端口号必须与在目标机器上配置 VNC 服务器时选择的显示或端口号相同。有关更多信息,请参阅第 4.4 节,“配置持久 VNC 服务器会话”

4.1.2 使用 vncviewer GUI 连接 编辑源文件

在不指定 `--listen` 或要连接的主机的情况下运行 `vncviewer` 时,它会显示一个窗口,要求输入连接详细信息。将主机输入到 VNC 服务器 字段中,如 第 4.1.1 节,“使用 vncviewer CLI 连接” 中所述,然后单击 连接

vncviewer asking for connection details
图 4.1:vncviewer

4.1.3 未加密连接的通知 编辑源文件

VNC 协议支持不同类型的加密连接,不要与密码身份验证混淆。如果连接不使用 TLS,则可以在 VNC 查看器的窗口标题中看到文本 (连接未加密!)

4.2 Remmina:远程桌面客户端 编辑源文件

Remmina 是一个现代且功能丰富的远程桌面客户端。它支持多种访问方法,例如 VNC、SSH、RDP 和 Spice。

4.2.1 安装 编辑源文件

要使用 Remmina,请验证您的系统上是否已安装 remmina 包,如果未安装,请安装它。请记住也安装 Remmina 的 VNC 插件。

# zypper in remmina remmina-plugin-vnc

4.2.2 主窗口 编辑源文件

通过输入 remmina 命令来运行 Remmina。

Remmina's main window
图 4.2:Remmina 的主窗口

主应用程序窗口显示已存储的远程会话列表。您可以在此处添加和保存新的远程会话,快速启动一个无需保存的会话,启动之前保存的会话,或设置 Remmina 的全局首选项。

4.2.3 添加远程会话 编辑源文件

要添加和保存新的远程会话,请单击主窗口左上角的 添加新会话。将打开 远程桌面首选项 窗口。

Remote desktop preference
图 4.3:远程桌面首选项

填写指定您新添加的远程会话配置文件的字段。最重要的字段是:

姓名

配置文件的名称。它将列在主窗口中。

协议

连接到远程会话时使用的协议,例如 VNC。

服务器

远程服务器的 IP 或 DNS 地址和显示编号。

用户名、密码

用于远程身份验证的凭据。如果不需要身份验证,请留空。

颜色深度、质量

根据您的连接速度和质量选择最佳选项。

选择 高级 选项卡以输入更具体的设置。

Tip
提示:禁用加密

如果客户端和远程服务器之间的通信未加密,请激活 禁用加密,否则连接将失败。

选择 SSH 选项卡以获取高级 SSH 隧道和身份验证选项。

使用 保存 确认。您的新配置文件现在列在主窗口中。

4.2.4 启动远程会话 编辑源文件

您可以启动之前保存的会话,也可以快速启动远程会话而无需保存连接详细信息。

4.2.4.1 快速启动远程会话 编辑源文件

要快速启动远程会话而无需添加和保存连接详细信息,请使用主窗口顶部的下拉框和文本框。

Quick-starting
图 4.4:快速启动

从下拉列表中选择通信协议,例如 VNC,然后输入 VNC 服务器 DNS 或 IP 地址,后跟冒号和显示编号,然后按 Enter 确认。

4.2.4.2 打开保存的远程会话 编辑源文件

要打开特定的远程会话,请从会话列表中双击它。

4.2.4.3 远程会话窗口 编辑源文件

远程会话在单独窗口的选项卡中打开。每个选项卡托管一个会话。窗口左侧的工具栏可帮助您管理窗口/会话。例如,切换全屏模式,将窗口大小调整为与会话的显示大小匹配,将特定的击键发送到会话,截取会话的屏幕截图或设置图像质量。

Remmina viewing remote session
图 4.5:Remmina 查看远程会话

4.2.5 编辑、复制和删除保存的会话 编辑源文件

编辑 保存的远程会话,请右键单击 Remmina 主窗口中的会话名称,然后选择 编辑。有关相关字段的说明,请参阅第 4.2.3 节,“添加远程会话”

复制 保存的远程会话,请右键单击 Remmina 主窗口中的会话名称,然后选择 复制。在 远程桌面首选项 窗口中,更改配置文件的名称,可选地调整相关选项,然后使用 保存 确认。

删除 保存的远程会话,请右键单击 Remmina 主窗口中的会话名称,然后选择 删除。在下一个对话框中确认

4.2.6 从命令行运行远程会话 编辑源文件

如果您需要从命令行或从批处理文件打开远程会话而无需先打开主应用程序窗口,请使用以下语法:

 > remmina -c profile_name.remmina

Remmina 的配置文件存储在您的主目录中的 .local/share/remmina/ 目录中。要确定属于您想要打开的会话的配置文件,请运行 Remmina,单击主窗口中的会话名称,然后在窗口底部的状态行中读取配置文件路径。

Reading path to the profile file
图 4.6:读取配置文件路径

在 Remmina 未运行时,您可以将配置文件重命名为更合理的文件名,例如 sle15.remmina。您甚至可以将配置文件复制到自定义目录,并使用 remmina -c 命令从那里运行它。

4.3 配置 VNC 服务器上的单次会话 编辑源文件

单次会话由远程客户端启动。它在服务器上启动图形登录屏幕。这样您可以选择启动会话的用户,如果登录管理器支持,还可以选择桌面环境。当您取消客户端与此类 VNC 会话的连接时,在该会话中启动的所有应用程序也会被终止。单次 VNC 会话无法共享,但可以在单个主机上同时拥有多个会话。

过程 4.1:启用单次 VNC 会话
  1. 启动 YaST › 网络服务 › 远程管理 (VNC)

  2. 选中 允许在没有会话管理的情况下进行远程管理

  3. 如果计划在 Web 浏览器窗口中访问 VNC 会话,请激活 启用使用 Web 浏览器访问

  4. 如果需要,还选中 在防火墙中打开端口(例如,当您的网络接口配置为处于外部区域时)。如果您有多个网络接口,请通过 防火墙详细信息 将打开防火墙端口限制为特定的接口。

  5. 使用 下一步 确认您的设置。

  6. 如果尚未提供所有必需的软件包,则需要批准安装缺少的软件包。

    Tip
    提示:重新启动显示管理器

    YaST 会更改显示管理器设置。您需要注销当前的图形会话并重新启动显示管理器,才能使更改生效。

Remote administration
图 4.7: 远程管理

4.3.1 可用配置 编辑源代码

openSUSE Leap 上,默认配置会以 1024x768 像素的分辨率和 16 位色深提供会话。会话在端口 5901 上可用,供 常规 VNC 查看器(相当于 VNC 显示 1)使用,并在端口 5801 上可用,供 Web 浏览器使用。

其他配置可以在不同的端口上提供,请参阅 第 4.3.3 节,“配置一次性 VNC 会话”

在一次性会话中,VNC 显示编号和 X 显示编号是独立的。每个服务器支持的配置都会手动分配一个 VNC 显示编号(例如,上面示例中的 :1)。每当使用其中一种配置启动 VNC 会话时,它都会自动获得一个空闲的 X 显示编号。

默认情况下,VNC 客户端和服务器都尝试通过安装后生成的自签名 SSL 证书安全地通信。您可以使用默认证书,也可以将其替换为自己的证书。在使用自签名证书时,需要在第一次连接之前确认其签名——在 VNC 查看器和 Web 浏览器中都需要确认。

Tip
提示

某些 VNC 客户端拒绝通过默认自签名证书建立安全连接。例如,Vinagre 客户端会针对 GnuTLS 全局信任存储验证证书,如果证书是自签名的,则会失败。在这种情况下,请使用除 x509 之外的其他加密方法,或者为 VNC 服务器生成一个正确签名的证书并将其导入到客户端的系统信任存储中。

4.3.2 启动一次性 VNC 会话 编辑源代码

要连接到一次性 VNC 会话,必须安装一个 VNC 查看器,请参阅 第 4.1 节,“vncviewer 客户端”。或者,使用支持 JavaScript 的 Web 浏览器通过输入以下 URL 查看 VNC 会话:http://jupiter.example.com:5801

4.3.3 配置一次性 VNC 会话 编辑源代码

如果您不需要或不想修改默认配置,可以跳过此章节。

一次性 VNC 会话通过 systemd 套接字 xvnc.socket 启动。默认情况下,它提供六个配置块:三个用于 VNC 查看器(vnc1vnc3),三个用于提供 JavaScript 客户端(vnchttpd1vnchttpd3)。默认情况下,只有 vnc1vnchttpd1 处于活动状态。

要在启动时激活 VNC 服务器套接字,请运行以下命令

> sudo  systemctl enable xvnc.socket

要立即启动套接字,请运行

> sudo  systemctl start xvnc.socket

Xvnc 服务器可以通过 server_args 选项进行配置。有关选项列表,请参阅 Xvnc --help

在添加自定义配置时,请确保它们不使用已被其他配置、其他服务或同一主机上现有的持久 VNC 会话使用的端口。

通过输入以下命令激活配置更改

> sudo systemctl reload xvnc.socket
Important
重要:防火墙和 VNC 端口

在按照 过程 4.1,“启用一次性 VNC 会话” 描述激活远程管理时,防火墙中将打开端口 58015901。如果提供 VNC 会话的网络接口受到防火墙的保护,则需要在激活 VNC 会话的附加端口时手动打开相应的端口。有关说明,请参阅 “安全和加固指南”书籍,第 23 章“伪装和防火墙”

4.4 配置持久 VNC 服务器会话 编辑源代码

持久会话可以从多个客户端同时访问。这非常适合演示目的,其中一个客户端具有完全访问权限,而所有其他客户端只有查看权限。另一个用例是培训课程,培训师可能需要访问学员的桌面。

Tip
提示:连接到持久 VNC 会话

要连接到持久 VNC 会话,必须安装一个 VNC 查看器。有关更多详细信息,请参阅 第 4.1 节,“vncviewer 客户端”。或者,使用支持 JavaScript 的 Web 浏览器通过输入以下 URL 查看 VNC 会话:http://jupiter.example.com:5801

4.4.1 使用 vncmanager 启动的 VNC 会话 编辑源代码

过程 4.2: 启用持久 VNC 会话
  1. 启动 YaST › 网络服务 › 远程管理 (VNC)

  2. 激活 允许使用会话管理进行远程管理

  3. 如果计划在 Web 浏览器窗口中访问 VNC 会话,请激活 启用使用 Web 浏览器访问

  4. 如果需要,还选中 在防火墙中打开端口(例如,当您的网络接口配置为处于外部区域时)。如果您有多个网络接口,请通过 防火墙详细信息 将打开防火墙端口限制为特定的接口。

  5. 使用 下一步 确认您的设置。

  6. 如果尚未提供所有必需的软件包,则需要批准安装缺少的软件包。

    Tip
    提示:重新启动显示管理器

    YaST 会更改显示管理器设置。您需要注销当前的图形会话并重新启动显示管理器,才能使更改生效。

4.4.1.1 配置持久 VNC 会话 编辑源代码

在按照 过程 4.2,“启用持久 VNC 会话” 启用 VNC 会话管理后,通常可以使用您喜欢的 VNC 查看器(例如 vncviewer 或 Remmina)连接到远程会话。登录后,VNC 图标会出现在您的桌面环境的系统托盘中。单击该图标以打开 VNC 会话 窗口。如果您的桌面环境不支持系统托盘中的图标,请手动运行 vncmanager-controller

VNC session settings
图 4.8: VNC 会话设置

有几个设置会影响 VNC 会话的行为

非持久,私有

这等效于一次性会话。它对其他人不可见,并在您断开连接后终止。有关更多信息,请参阅 第 4.3 节,“配置 VNC 服务器上的一次性会话”

持久,可见

会话对其他用户可见,即使您断开连接后仍会继续运行。

会话名称

指定持久会话的名称,以便在重新连接时轻松识别。

不需要密码

会话可以自由访问,无需使用用户凭据登录。

需要用户登录

您需要使用有效的用户名和密码登录才能访问会话。在 允许的用户 文本框中列出有效的用户名。

允许一次一个客户端

防止多个用户同时加入会话。

允许多个客户端

允许多个用户同时加入持久会话。适用于远程演示或培训课程。

使用 确定 确认。

4.4.1.2 加入持久 VNC 会话 编辑源代码

在按照 第 4.4.1.1 节,“配置持久 VNC 会话” 描述设置持久 VNC 会话后,可以使用您的 VNC 查看器加入它。在您的 VNC 客户端连接到服务器后,系统会提示您选择是创建新会话还是加入现有会话

Joining a persistent VNC session
图 4.9: 加入持久 VNC 会话

单击现有会话的名称后,根据持久会话设置,系统可能会要求您提供登录凭据。

4.5 配置 VNC 服务器上的加密 编辑源代码

如果 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 用法)。

Tip
提示

某些 VNC 客户端拒绝通过默认自签名证书建立安全连接。例如,Vinagre 客户端会针对 GnuTLS 全局信任存储验证证书,如果证书是自签名的,则会失败。在这种情况下,请使用除 x509 之外的其他加密方法,或者为 VNC 服务器生成一个正确签名的证书并将其导入到客户端的系统信任存储中。

Tip
提示:证书和密钥的路径

使用基于 X509 的加密时,需要使用 -X509Cert-X509Key 选项指定 X509 证书和密钥的路径。

如果选择用逗号分隔的多个安全类型,则将使用客户端和服务器都支持并允许的第一个类型。这样,您就可以在服务器上配置机会性加密。如果您需要支持不支持加密的 VNC 客户端,这将很有用。

在客户端上,您还可以指定允许的安全类型,以防止降级攻击,如果您正在连接到您知道已启用加密的服务器(尽管我们的 vncviewer 会在那种情况下向您发出 Connection not encrypted! 消息)。

4.6 与 Wayland 的兼容性 编辑源代码

远程管理 (VNC) 功能依赖于 X11,如果启用了 Wayland,可能会导致屏幕为空。必须将显示管理器配置为使用 X11 而不是 Wayland。对于 gdm,请编辑 /etc/gdm/custom.conf。在 [daemon] 部分,将 WaylandEnable=false 添加到配置文件中。登录时,用户还必须选择兼容 X11 的会话。如果您希望删除 GNOME 的 Wayland 选项,可以删除并锁定 gnome-session-wayland 包。

打印此页面