如何在 Ubuntu 18.04 上安装和配置 VNC

2021-06-07 14:24:32 浏览数 (1)

本指南介绍了在 Ubuntu 18.04 系统上安装和配置 VNC 服务器所需的步骤。我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器。

虚拟网络计算(VNC)是一种图形桌面共享系统,允许您使用键盘和鼠标远程控制另一台计算机。

先决条件

在继续学习本教程之前,请确保以具有 sudo 权限的用户身份登录。

安装桌面环境

大多数服务器没有安装桌面环境,因此我们首先要安装轻量级桌面环境。

Ubuntu 存储库中有几个桌面环境(DE)。在本教程中,我们将安装 Xfce 。它是快速,稳定和轻量级的桌面环境,非常适合在远程服务器上使用。

首先使用以下命令更新系统

sudo apt update

sudo apt upgrade

然后,键入以下命令以在服务器上安装 Xfce :

sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

根据您的系统,下载和安装 Xfce 软件包可能需要一些时间。

安装 VNC 服务器

Ubuntu 存储库中还有几种不同的 VNC 服务器,如 TightVNC , TigerVNC 和 x11vnc 。每个 VNC 服务器在速度和安全性方面都有不同的优点和缺点。

我们将安装 TigerVNC ,它是高性能 VNC 服务器,并被积积极维护。

键入以下命令以在 Ubuntu 服务器上安装 TigerVNC :

sudo apt install tigervnc-standalone-server tigervnc-common

现在安装了 VNC 服务器,下一步是运行 vncserver 命令,该命令将创建初始配置并设置密码。运行以下命令时不要使用 sudo :

vncserve

系统将提示您输入并确认密码,以及是否将其设置为仅查看密码。如果您选择设置仅查看密码,则用户将无法使用鼠标和键盘与 VNC 实例进行交互。

You will require a password to access your desktops.

Password:

Verify:

Would you like to enter a view-only password (y/n)? n

/usr/bin/xauth: file /home/buzheng/.Xauthority does not exist

New 'server2.buzheng.org:1 (buzheng)' desktop at :1 on machine server2.buzheng.org

Starting applications specified in /etc/X11/Xvnc-session

Log file is /home/buzheng/.vnc/server2.buzheng.org:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/buzheng/.vnc/passwd :1 to connect to the VNC server.

第一次 vncserver 运行命令时,它将创建密码文件并将其存储在 ~/.vnc 目录中,如果不存在,将创建该目录。

注意上面输出中主机名之后的 :1 。这表示运行 vnc 服务器的显示端口号。在我们的例子中,服务器在 TCP 端口 5901 (5900 1)上运行。如果您创建第二个实例, vncserver 它将在下一个空闲端口上运行,即 :2 这意味着服务器正在端口 5902 (5900 2)上运行。

重要的是要记住,当使用 VNC 服务器时, :X 是一个引用的显示端口 5900 X 。

在继续下一步之前,首先使用带有 -kill 选项和服务器编号作为参数的 vncserver 命令停止 VNC 实例。在我们的例子中,服务器在端口 5901 (:1)中运行,因此我们将使用以下命令停止它:

vncserver -kill :1

Killing Xtigervnc process ID 7264... success!

配置 VNC 服务器

现在我们已经在服务器上安装了 Xfce 和 TigerVNC ,我们需要配置 TigerVNC 来使用 Xfce 。为此,请创建以下文件 〜/.vnc/xstartup:

nano ~/.vnc/xstartup

#!/bin/sh

unset SESSION_MANAGER

unset DBUS_SESSION_BUS_ADDRESS

exec startxfce4

保存并关闭文件。无论何时启动或重启 TigerVNC 服务器,都将自动执行上述命令。

~/.vnc/xstartup 文件还需要具有执行权限。运行以下命令以确保权限正确:

chmod u x ~/.vnc/xstartup

如果需要将附加选项传递给 VNC 服务器,则可以创建一个名为 config 的文件,并为每行添加一个选项。这是一个例子:

文件 ~/.vnc/config

geometry=1920x1084

dpi=96

创建 Systemd 单元文件

我们将创建一个 systemd 单元文件,使我们能够根据需要轻松启动,停止和重新启动 VNC 服务,与任何其他 systemd 服务相同。

打开文本编辑器,将以下配置复制并粘贴到其中。请务必更改第 7 行中的用户名以匹配您的用户名。

sudo nano /etc/systemd/system/vncserver@.service

[Unit]

Description=Remote desktop service (VNC)

After=syslog.target network.target

[Service]

Type=simple

User=buzheng

PAMName=login

PIDFile=/home/%u/.vnc/%H%i.pid

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'

ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg

ExecStop=/usr/bin/vncserver -kill :%i

[Install]

WantedBy=multi-user.target

保存并关闭文件。

通知 systemd 我们创建了一个新的单元文件:

sudo systemctl daemon-reload

下一步是使用以下命令启用单元文件:

sudo systemctl enable vncserver@1.service

符号 1 后面的数字 @ 定义了运行 VNC 服务的显示端口。这意味着 VNC 服务器将侦听端口 5901 ,正如我们在上一节中讨论的那样。

执行以下命令启动 VNC 服务:

sudo systemctl start vncserver@1.service

验证服务是否已成功启动:

sudo systemctl status vncserver@1.service

● vncserver@1.service - Remote desktop service (VNC)

Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)

Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago

Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

Main PID: 9900 (vncserver)

Tasks: 0 (limit: 507)

CGroup: /system.slice/system-vncserver.slice/vncserver@1.service

‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

连接到 VNC 服务器

VNC 不是加密协议,可以进行数据包嗅探。建议的方法是创建一个 SSH 隧道,该隧道将安全地将来自本地计算机的端口 5901 上的流量转发到同一端口上的服务器。

在 Linux 和 macOS 上设置 SSH 隧道

如果在计算机上运行 Linux , macOS 或任何其他基于 Unix 的操作系统,则可以使用以下命令轻松创建 SSH 隧道:

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

系统将提示您输入用户密码。

不要忘了更换 username ,并 server_ip_address 与您的用户名和服务器的 IP 地址。

在 Windows 上设置 SSH 隧道

如果运行 Windows ,则可以使用 PuTTY SSH 客户端设置 SSH 隧道。

打开 Putty 并在 Host name or IP address 字段中输入您的服务器 IP 地址。

在 Connection 菜单框下,展开 SSH 并选择 Tunnels 。输入 VNC 服务器端口(5901 在) Source Port 字段,并输入 server_ip_address:5901 在 Destination 现场和点击 Add 如下图所示的图像按钮:

返回 Session 页面以保存设置,这样您每次都不需要输入它们。现在,您只需选择已保存的会话并通过单击 Open 按钮登录到远程服务器。

使用 Vncviewer 连接

现在您已经设置了 SSH 隧道,现在可以打开 Vncviewer 并连接到 VNC 服务器了 localhost:5901 。

您可以使用任何 VNC 查看器,如 TigerVNC , TightVNC , RealVNC , UltraVNC Vinagre 和 VNC Viewer for Google Chrome 。

在这个例子中,我们将使用 TigerVNC 。打开 VNC 查看器,输入 localhost:5901 并单击 Connect 按钮。

出现提示时输入密码,您应该会看到默认的 Xfce 桌面。它应该看起来像这样:

您可以使用键盘和鼠标从本地计算机开始与远程 XFCE 桌面交互。

结论

到目前为止,您应该已经启动并运行 VNC 服务器,并且可以使用易于使用的图形界面从本地桌面计算机轻松管理 Ubuntu 18.04 服务器。

要配置 VNC 服务器以启动多个用户的显示,请使用该 vncserver 命令创建初始配置并设置密码。您还需要使用其他端口创建新的服务文件。

如果您有任何问题,请随时发表评论。

0 人点赞