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

本文介绍了在CentOS 8上安装和配置VNC服务器的步骤。我们还将向您展示如何通过SSH tunnel隧道安全地连接到VNC服务器。

先决条件

要遵循本指南,您需要使用sudo特权用户的身份在远程CentOS计算机上登录。

安装桌面环境

通常,服务器未安装桌面环境。 如果您要连接的计算机没有GUI,则第一步是安装它。 否则,请跳过此步骤。

运行以下命令在远程计算机上安装Gnome(CentOS 8中的默认桌面环境):

sudo dnf groupinstall "Server with GUI"

根据您的系统网络情况,下载和安装Gnome软件包可能会花费一些时间。

安装VNC服务器

TigerVNC 是一个主动维护的高性能开源VNC服务器。 它在默认的CentOS存储库中可用。 要安装它,请输入:

sudo dnf install tigervnc-server

配置VNC服务器

与以前版本的CentOS不同,CentOS 8中的TigerVNC是使用systemd守护程序配置的。

在此示例中,我们将向您展示如何为一个或多个VNC用户配置TigerVNC。

使用vncpasswd命令设置密码。以将要访问VNC服务器的用户身份运行命令,请勿使用sudo

vncpasswd

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

第一次运行vncpasswd命令时,它将创建密码文件并将其存储在用户的~/.vnc目录中。

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

如果要添加第二个用户,请切换到该用户并设置密码。 下一步是配置TigerVNC使用Gnome桌面环境。 VNC从~/.vnc/config文件中读取用户配置设置。打开文件并添加以下内容:

vim ~/.vnc/config
session=gnome
geometry=1920x1200
localhost
alwaysshared

session选项指定要启动的会话,geometry选项指定VNC桌面的大小。保存并关闭文件。如果要添加多个用户,请重复相同的步骤。

TigerVNC附带了一个文件,可让您将用户映射到特定端口。映射在/etc/tigervnc/vncserver.users文件中配置:

sudo vim /etc/tigervnc/vncserver.users

在下面的示例中,我们将显示端口:1映射到用户myfreax。使用相同的格式添加更多用户。

# TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa
:1=myfreax

:1是VNC服务器监听的端口号。在我们的例子中,服务器在TCP端口5901(5900 + 1)上运行。例如,如果您将另一个用户映射到端口:2,则服务器还将监听端口5902(5900 + 2)。

要理解的重要一点是,在使用VNC服务器时,:X是表示5900+X的端口号。

启动Tigervnc服务器

完成配置后,最后一步是启动VNC服务器。

要为映射到端口:1的用户启动并启用VNC服务,请输入:

sudo systemctl enable vncserver@:1 --now

如上一节所述,VNC服务器将监听端口5901。您可以通过以下方法验证服务是否已成功启动:

sudo systemctl status vncserver@:1
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-12-17 21:49:41 UTC; 8s ago
  ...

要为其他用户启用VNC,只需将1替换为映射到该用户的端口即可。

连接到VNC服务器

VNC不是加密协议,可能会受到数据包嗅探。 推荐的方法是创建 SSH tunnel隧道,以安全地将流量从端口5901上的本地计算机转发到同一端口上的远程服务器。

在Linux和macOS上设置SSH tunnel隧道

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

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

系统将提示您输入用户密码。不要忘记用您的用户名和服务器的IP地址替换usernameserver_ip_address

在Windows上设置SSH隧道

Windows用户可以使用 PuTTY 。设置SSH tunnel隧道。打开Putty,然后在Host name or IP address字段中输入您的服务器IP地址。

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

返回Session页面以保存设置,因此您无需每次都输入它们。 要登录到远程服务器,请选择保存的会话,然后单击Open按钮。

使用Vncviewer连接

要连接到远程服务器,请打开Vncviewer,然后输入localhost:5901。您现在可以使用键盘和鼠标从本地计算机开始在远程桌面上工作。

结论

我们已向您展示了如何设置VNC服务器并连接到远程CentOS 8计算机。如有任何疑问,请随时发表评论。