如何在 Ubuntu 20.04 上安装和配置 VNC
介绍
虚拟网络计算(VNC)是一种连接系统,它允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于还不熟悉命令行操作的用户来说,VNC 使他们能够更轻松地管理远程服务器上的文件、软件和设置。.
本指南将指导您在 Ubuntu 20.04 服务器上使用 TightVNC 设置 VNC 服务器,并通过 SSH 隧道连接到该服务器。然后,您将在本地计算机上使用 VNC 客户端程序,通过图形桌面环境与服务器进行交互。.
先决条件
要完成本教程,您需要:
- 一台运行 Ubuntu 20.04 的服务器,具有非 root 管理员用户,并配置了 UFW 防火墙。.
- 一台安装了 VNC 客户端的本地计算机。您使用的 VNC 客户端必须支持通过 SSH 隧道进行连接:
- 在 Windows 系统上,您可以使用 TightVNC、RealVNC 或 UltraVNC。.
- 在 macOS 上,您可以使用内置的屏幕共享应用程序,也可以使用 RealVNC 等跨平台应用程序。.
- 在Linux系统中,您可以选择多种选项,包括: 醋, 韩国农村发展公司选择 RealVNC 或 TightVNC。.
步骤 1 – 安装桌面环境和 VNC 服务器
默认情况下,Ubuntu 20.04 Server 没有预装图形桌面环境或 VNC 服务器,因此您需要先安装它们。.
在选择 VNC 服务器和桌面环境时,您有很多选择。本教程将指导您安装最新版 Xfce 桌面环境和 Ubuntu 官方软件仓库中提供的 TightVNC 软件包。Xfce 和 TightVNC 都以轻量级和快速著称,即使在网速较慢的情况下,也能确保您的 VNC 连接流畅稳定。.
使用 SSH 连接到服务器后,更新您的软件包列表:
$ sudo apt update
现在将 Xfce 打包在一起 xfce4-goodies 本次安装包含对桌面环境的多项改进:
$ sudo apt install xfce4 xfce4-goodies
安装过程中,系统可能会提示您为 Xfce 选择默认显示管理器。显示管理器是一种程序,它允许您通过图形界面选择并登录桌面环境。您只会在使用 VNC 客户端连接时才会使用 Xfce,并且在这些 Xfce 会话中,您已经以非 root 用户身份登录。因此,就本教程而言,选择显示管理器并不重要。选择一个即可。 进入 按 。.
安装完成后,安装 TightVNC 服务器:
$ sudo apt install tightvncserver
接下来是命令vnc服务器 运行以下命令设置 VNC 密码、创建初始配置文件并启动 VNC 服务器实例:
$ vncserver
您将被要求输入并确认密码才能远程访问您的设备:
输出
您需要密码才能访问您的桌面电脑。.
密码:
核实:
密码长度必须为六到八个字符。超过八个字符的密码将被自动截断。.
确认密码后,您可以选择创建只读密码。使用只读密码登录的用户将无法通过鼠标或键盘控制 VNC 实例。如果您想向使用 VNC 服务器的其他人展示某些内容,这是一个很有用的选项,但并非必需。.
此过程随后会创建服务器所需的默认配置文件和连接信息。此外,它还会在端口上创建一个默认服务器实例。 5901 这个端口叫做显示端口,VNC 使用它作为……:1 VNC 可以在其他显示端口上运行多个实例, :2 到港口5902,3: 指向 5903 ETC。:
输出
您是否要输入只读密码(y/n)?n
xauth:文件 /home/萨米/.Xauthority 不存在
新的‘X’桌面是 你的主机名:1
创建默认启动脚本 /home/萨米/.vnc/xstartup
启动 /home/ 中指定的应用程序萨米/.vnc/xstartup
日志文件位于 /home/萨米/.vnc/你的主机名:1.log
请注意,如果您以后想要更改密码或添加只读密码,可以使用以下命令进行操作。 vncpasswd 做:
$ vncpasswd
至此,VNC 服务器已安装并运行。现在我们来配置它,使其启动 Xfce 桌面环境,并允许我们通过图形界面访问服务器。.
步骤 2 – 配置 VNC 服务器
VNC 服务器需要知道启动时要运行哪些命令。具体来说,VNC 需要知道要连接到哪个图形桌面环境。.
VNC 服务器启动时运行的命令位于一个名为 `<filename>` 的配置文件中。 x启动 在文件夹中
.vnc 以下是您的主目录。启动脚本是在您运行上一步命令时创建的。 vnc服务器 你已经运行了它,但你需要创建自己的脚本来启动 Xfce 桌面。.
由于您要更改 VNC 服务器的配置,请先删除在端口上运行的 VNC 服务器实例。 5901 它正在运行。请使用以下命令停止它:
$ vncserver -kill :1
输出结果将如下所示,但您会看到不同的PID:
输出
终止 Xtightvnc 进程 ID 17648
文件之前 x启动 更改,恢复原状:
$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
现在是一个文件 x启动 新建一个文件,然后用文本编辑器打开它,例如 纳米 打开:
$ nano ~/.vnc/xstartup
然后将以下几行添加到文件中:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
第一行是 shebang。在 *nix 平台上可执行的纯文本文件中, 谢邦 它告诉系统将该文件发送给哪个解释器执行。在本例中,您将文件发送给了 Bash 解释器。这样,文件中的每一行就可以按顺序作为命令执行。.
文件中的第一条命令是: xrdb $HOME/.XresourcesVNC GUI 框架调用该文件。 .X资源 用户读取服务器。 .X资源 用户可在此处更改图形桌面的一些设置,例如终端颜色、光标主题和字体渲染。第二个命令指示服务器启动 Xfce。每次启动或重启 VNC 服务器时,这些命令都会自动执行。.
添加这些代码后,保存并关闭文件。如果 纳米 使用方法很简单,只需按下即可。 CTRL + X, Y 进而 进入 去做。.
为确保 VNC 服务器能够正确使用这个新的安装文件,您需要使其可执行:
$ chmod +x ~/.vnc/xstartup
然后重启VNC服务器:
$ vncserver -localhost
请注意,这次的命令包含了该选项。 -localhost 这会将 VNC 服务器连接到服务器的回环接口。这样一来,VNC 将只允许来自其安装所在服务器的连接。.
接下来,您需要在本地计算机和服务器之间创建一个 SSH 隧道,这实际上是欺骗 VNC,让它误以为来自本地计算机的连接源自服务器。这种策略为 VNC 增加了一层额外的安全保障,因为只有那些已经拥有服务器 SSH 访问权限的用户才能访问它。.
你会看到类似这样的输出:
输出
新的‘X’桌面是 你的主机名:1
启动 /home/ 中指定的应用程序萨米/.vnc/xstartup
日志文件位于 /home/萨米/.vnc/你的主机名:1.log
配置完成后,您就可以从本地计算机连接到 VNC 服务器了。.
步骤 3 – 安全连接到 VNC 桌面
VNC 本身在连接时不使用安全协议。要安全地连接到您的服务器,您需要创建一个 SSH 隧道,然后指示 VNC 客户端使用该隧道进行连接,而不是直接通信。.
在本地计算机上创建一个安全的 SSH 连接,连接到 主机本地连接 VNC传输。您可以通过Linux或macOS上的终端使用以下命令进行此操作。SSH 请执行以下操作:
$ ssh -L 59000 :localhost: 5901 -C -N -l 萨米 你的服务器IP
以下是该命令选项的含义 SSH 文中指出:
- -L 59000:localhost:5901: 转变 -L 指定给定端口位于本地计算机上(59,000(必须发送到目标服务器上的指定主机和端口)localhost:5901意思是港口 5901 在目标服务器上,作为 你的服务器IP (已定义)。请注意,您指定的本地端口在某种程度上是任意的。只要该端口尚未连接到其他服务,您就可以将其用作隧道转发端口。.
- -C此标志启用压缩功能,有助于减少资源消耗并加快任务速度。.
- -N:此选项是SSH 它提示您不想运行任何远程命令。如果您只想转发端口,此设置非常有用。.
- l sammy 你的服务器 IP 地址-: 转变 -l 允许您指定连接服务器时要登录的用户。请确保 萨米 和 你的服务器IP 请将此处替换为您的非root用户名和服务器IP地址。.
笔记: 此命令创建一个 SSH 隧道,该隧道从端口发送数据。 5901 在您的 VNC 服务器上,转到端口 59,000 通过本地计算机端口 22 在每台设备上,默认的 SSH 端口都已转发。假设您已按照 Ubuntu 20.04 的基本服务器设置指南进行操作,则您应该已添加了一条 UFW 规则,允许通过 OpenSSH 连接到您的服务器。.
这比打开服务器防火墙连接端口更安全。 5901 这是因为VNC允许任何人通过VNC访问你的服务器。而通过SSH隧道连接,则可以将VNC访问限制在已经拥有服务器SSH访问权限的机器上。.
如果您使用 PuTTY 连接到服务器,可以通过右键单击终端窗口顶部栏,然后单击相应的选项来创建 SSH 隧道。 …更改设置 点击:

分支 联系 在 PuTTY 重新配置窗口左侧的树状菜单中找到该分支。 SSH 打开并轻敲 隧道 点击。 端口转发页面控制器选项</59000 strong> SSH,作为源端口和 localhost:5901 输入目的地,像这样:

然后点击按钮。 添加 点击,然后点击按钮 申请 点击即可建立隧道。.
隧道运行后,使用 VNC 客户端连接到 localhost:59000 系统会要求您使用在步骤 1 中设置的密码进行身份验证。.
连接成功后,您将看到默认的 Xfce 桌面环境。它应该看起来像这样:

如您所见,您可以使用文件管理器或命令行访问主目录中的文件:

CTRL+C 在本地终端中按下停止键,即可停止 SSH 隧道并返回到您的应用程序。此操作也会断开您的 VNC 会话。.
现在您可以将 VNC 服务器配置为作为 systemd 服务运行。.
步骤 4 – 将 VNC 作为系统服务运行
通过将 VNC 服务器配置为 systemd 服务,您可以像管理其他服务一样,根据需要启动、停止和重启它。您还可以使用 systemd 管理命令来确保 VNC 在服务器启动时自动启动。.
首先,创建一个名为的新单元文件 /etc/systemd/system/[email protected] 创造:
$ sudo nano /etc/systemd/system/[email protected]
象征 @ 名称末尾允许我们传递一个参数,您可以在服务配置中使用该参数。您可以使用此参数指定管理服务时要使用的 VNC 显示端口。.
将以下几行添加到文件中。务必包含该值。 用户、组、工作目录 以及值中的用户名 PID 文件 请修改为与您的用户名一致:
[单元] 描述=启动时启动 TightVNC 服务器
After=syslog.target network.target
[服务] 类型=分叉
用户= 萨米
组= 萨米
工作目录=/home/萨米
PIDFile=/home/萨米/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -深度 24 -几何尺寸 1280×800 -localhost:%i
ExecStop=/usr/bin/vncserver -kill :%i
[安装] WantedBy=多用户.target
命令 ExecStartPre 如果 VNC 已经在运行,它将停止。命令 执行启动 启动 VNC 并将颜色深度设置为 24 位颜色,分辨率为 1280×800。您也可以根据需要更改这些启动选项。另请注意该命令执行启动 再次
包含选项 -localhost 这是。.
保存并关闭文件。.
接下来,通知系统新的单元文件:
$ sudo systemctl daemon-reload
$ sudo systemctl daemon-reload
启用单元文件:
$ sudo systemctl enable [email protected]
1 在标志下方@ 指示服务应显示在哪个显示屏上,在本例中为默认显示屏。 :1 如步骤 2 中所述。.
如果 VNC 服务器仍在运行,请停止当前实例:
$ vncserver -kill :1
然后像启动其他 systemd 服务一样启动它:
$ sudo systemctl start vncserver@1
您可以使用以下命令验证它是否已启动:
$ sudo systemctl status vncserver@1
如果启动正常,输出结果应如下所示:
输出
● [email protected] – 启动时启动 Tight VNC 服务器
已加载:已加载(/etc/systemd/system/[email protected];已启用;供应商预设:已启用)
活动状态:自 2020 年 5 月 7 日星期四 17:23:50 UTC 起处于活动(运行中);6 秒前
进程:39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
进程:39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280×800 :1 (code=exited, status=0/SUCCESS)
主进程 ID:39795 (Xtightvnc)
…
您的 VNC 服务器现在已准备就绪,服务器启动时即可使用。您可以使用以下命令像启动其他 systemd 服务一样启动它。系统控制 管理。.
但是,客户端不会有任何区别。要重新连接,请重启 SSH 隧道:
$ ssh -L 59000 :localhost: 5901 -C -N -l 萨米 你的服务器IP
然后使用您的 VNC 客户端软件建立新的连接 localhost:59000 创建与服务器的连接。.
结果
现在,您的 Ubuntu 20.04 服务器上运行着一个安全的 VNC 服务器。您可以通过用户友好的图形界面管理文件、软件和设置,还可以远程运行 Web 浏览器等图形软件。.









