返回博客

在 Ubuntu 20.04 上安装和配置虚拟网络计算 (VNC)

在 Ubuntu 20.04 上安装和配置虚拟网络计算 (VNC)

Virtual Network Computing (VNC) 是一种屏幕共享系统,用于远程访问图形用户界面。它使用远程帧缓冲协议,允许一个服务器(用户端)与另一端(客户端)连接。VNC 安全、可靠,且适用于所有操作系统。

RealVNC, UltraVNC, Xfce, TightVNC等等,是当今最流行的 VNC 客户端。在可用的替代方案列表中,您可以根据自己的方便自由选择任何 VNC。在本教程中,我们将引导您完成在 Ubuntu 20.04 上安装和配置 VNC 的步骤。我们将安装 Xfce,因为它速度快、轻量级且性能优异。

我们将首先在 Ubuntu 服务器上设置 VNC 服务器,并通过 SSH 隧道建立安全连接。最后,我们将在本地机器上使用 VNC 客户端程序,通过图形桌面环境与服务器进行交互。

前提条件

要学习本教程,您需要:

步骤 1 — 安装桌面环境和 VNC 服务器

与以前的 Ubuntu 版本不同,Ubuntu 20.04 没有预装 VNC。第一步,我们将从官方 Ubuntu 软件源安装必要的软件包。在继续之前,让我们更新现有的软件包:

现在我们将安装 Xfce 以及 xfce4-goodies 软件包,使用以下命令:

在安装软件包时,您会看到一个屏幕,提示您为 Xfce 选择默认的显示管理器。忽略该消息或将其设置为默认值,然后按 ENTER.

显示管理器是一个允许用户通过图形界面登录桌面环境的程序。在本教程中,当使用 VNC 客户端连接时,我们将使用 Xfce,此时我们以非 root 的 Ubuntu 用户身份登录。因此,显示管理器的选择不会对我们的安装产生任何影响。

安装 Xfce 后,我们将安装 TightVNC 服务器:

在下一步中,使用 vncserver 命令设置 VNC 访问密码并创建初始配置文件。输入以下内容以启动 VNC 服务器实例:

之后,设置一个 6-8 位字符长的密码,然后按 ENTER。您将看到一条提示消息:

验证密码后,您将看到一个创建仅查看密码的选项。使用仅查看密码登录的用户将被限制使用鼠标或键盘控制 VNC。同样,这只是推荐做法,如果您需要可以启用它,否则可以跳过。

将来,如果您希望更改密码或添加仅查看密码,请使用以下命令:

到目前为止,您已经为服务器创建了所有默认配置,并且一个显示端口 5901 已启动为 :1。VNC 可以在其他显示端口上启动多个实例,例如 :2, :3,以及 :4 分别指向端口 5902, 5903,以及 5904

您的 VNC 服务器现已安装并成功运行。在下一步中,让我们配置服务器以启动 Xfce,从而通过图形界面进行访问。

步骤 2 — 配置 VNC 服务器

在主目录下,您会找到 .vnc 文件夹,其中包含所有名为 startup 的配置文件。最初,您会发现正在运行的启动文件,这是我们在 vncserver 中运行命令 Step-1 时自动创建的。启动脚本是在您在上一步中运行 vncserver 命令时创建的。但是,您现在将创建自己的脚本来启动 Xfce 桌面。由于 VNC 配置会发生变化,我们还必须创建自己的服务器来启动 Xfce 桌面。

在继续操作之前,我们必须停止运行在端口 5901:

您将看到以下输出:

您可能会得到一个不同的数字,而不是 17648,这没关系。接下来,我们将修改 xstartup 文件。在对文件进行任何修改之前,让我们先备份原始文件:

接下来,创建一个新的 xstartup 文件并在任何文本编辑器中打开它。在本教程中,我们使用的是 nano:

完成后,将以下行添加到文件中:

每当您启动或重启 VNC 服务器时,这些命令都会自动执行。第一行是 Shebang,它向系统通知解释器的信息,以便传递 ~/.vnc/xstartup 文件以执行。下一行 xrdb $HOME/. Xresources,通知 VNC 的 GUI 框架读取服务器用户的 Xresources 文件。最后,最后一行要求服务器启动 Xfce。添加这些行后,保存并关闭文件。

我们需要使该文件可执行,以便 VNC 服务器可以使用新的启动文件:

接下来,重启 VNC 服务器:

现在您将在此处添加 -localhost 选项。localhost 将 VNC 服务器绑定到您服务器的环回接口,仅允许来自已安装服务器的连接。接下来,我们将在本地机器和服务器之间建立一个 SSH 隧道。目的是在 VNC 周围增加一层额外的安全保护。为什么?因为能够访问的用户将是那些已经拥有服务器 SSH 访问权限的用户。

您将看到以下输出:

配置完成后,我们就可以从本地机器连接到 VNC 服务器了。

步骤 3 — 安全连接到 VNC 桌面

在与服务器连接时,VNC 不使用安全协议。因此,我们需要建立一个 SSH 隧道,并要求 VNC 客户端使用该隧道进行连接,而不是允许其自行进行直接连接。

我们将在本地计算机上使用 ssh 命令创建一个 SSH 连接,该命令将转发到 localhost 连接。在终端上使用该命令创建 SSH 连接:

让我们来解释一下上面的代码:

  • -L 59000:localhost:5901-L 参数指定本地计算机上的给定端口( 59000)将转到目标服务器上的给定主机 and 端口( localhost:5901)。这意味着端口 5901 在目标服务器上将被定义为 your_server_ip)。您指定的本地端口是任意的。只要该端口尚未绑定到其他服务,您就可以自由地将其用作隧道的转发端口。

  • -C:启用压缩,这有助于进一步减少资源消耗并提高性能。

  • -N:对转发端口很有用。这会通知 ssh 不要执行任何远程命令。

  • -l cloudsigma your_server_ip-l 参数允许您指定连接到服务器后要登录的用户。

与仅打开服务器防火墙以允许连接到端口 相比,上述命令是建立安全连接的一种更安全的方法。5901(来自任何地方)。建立连接后,SSH 隧道会将内容从 VNC 上的端口 5901 转发到您本地机器上的端口 59000,通过默认的 SSH 端口;端口 22.

您也可以使用 PuTTY 连接您的服务器。打开 PuTTY,转到 PuTTY 终端的左侧并找到 Connection 分支进行连接。然后,展开 SSH 分支并点击 Tunnels。在 Options controlling SSH port forwarding 屏幕上,输入 59000 作为 Source Port,并将 localhost:5901 作为 Destination:

VNC image 1

保持所有选项不变,点击 Add,然后点击 Apply 以应用隧道。隧道启动后,使用 VNC 客户端连接到 localhost: 59000。默认情况下,系统会提示您使用我们在 Step-1 中创建的密码进行身份验证。连接后,您将看到默认的 Xfce 桌面:

VNC 2

您可以访问和管理主目录中的文件。此外,将您的 VNC 服务器配置为作为 systemd 服务.

步骤 4 — 将 VNC 作为 Systemd 服务运行

将 VNC 服务器设置为作为 systemd 服务运行可以方便服务器管理。您可以根据自己的方便和需要启动、停止、重启或终止服务。每次服务器启动时,您都可以使用 systemd 管理命令来验证服务器是处于 ON 还是 OFF.

首先,我们将创建一个新的 unit 文件,以指定我们在管理服务时要使用的 VNC 显示端口。定义一个 unit 文件:

您会在文件名末尾找到 @ 符号,这允许您传递一个参数来使用该服务配置。

接下来,将以下几行添加到 unit 文件中。重命名 User, Group, WorkingDirectory, 以及 PIDFILE:

如果 VNC 已经在运行, ExecStartPre 命令将停止它。 ExecStart 命令会启动 VNC 并将颜色深度设置为 24 位颜色,分辨率为 1280×800。您可以根据需要编辑这些启动选项。另外,请注意 ExecStart 命令再次包含 -localhost 选项。完成后,保存并关闭 unit 文件。

接下来,向您的系统引入新的 unit 文件:

启用 ON 该 unit 文件:

1 之后的 @ 符号表示该服务应显示在哪个显示器编号上。在我们的例子中,它是默认的 :1,正如在 步骤 2 中讨论的那样。如果 VNC 仍在运行,您可以使用 kill 命令停止当前 VNC 服务器实例:

然后,像启动任何其他 systemd 服务一样启动它:

您可以使用此命令验证它是否已启动:

您将看到以下输出:

现在,每当您的服务器启动时,您的 VNC 服务器就已准备就绪,您可以使用 systemctl 命令来管理它,就像管理任何其他 systemd 服务一样。但是,您在客户端不会看到任何区别。要重新连接,请使用以下命令启动您的 SSH 隧道:

您可以再次使用 VNC 客户端连接到 localhost:59000 来访问您的服务器。

结论

起初,设置 VNC 服务器可能看起来具有挑战性,尤其是当您尝试连接到新计算机时。一旦建立了可靠的连接,使用远程计算机就会变得有趣且令人兴奋。在您的 Ubuntu 20.04 服务器上运行安全的 VNC 服务器后,您可以通过用户友好的图形界面轻松管理您的资源、文件、软件和设置。占用过多带宽可能是使用 VNC 的一个缺点。您可以通过使用低分辨率和灰度屏幕来实现更快的传输,从而克服这一缺点。

祝您使用愉快!

author

Shreyas Patil

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。