如何在 CentOS 和 RHEL 中安装和配置 VNC 服务器

在本指南中,我们将解释如何在CentOS 7/8RHEL 9/8/7桌面版中通过tigervnc-server程序安装和配置VNC远程访问,以便访问远程桌面机器

VNC虚拟网络计算)是一种服务器-客户端协议,允许用户账户远程连接并使用图形用户界面提供的资源控制远程系统。

与直接连接到运行时桌面的其他VNC服务器(如VNC XVino)不同,tigervnc-vncserver使用不同的机制,为每个用户配置一个独立的虚拟桌面。

要求

步骤1:在CentOS上安装和配置VNC

1. Tigervnc-server是一个执行Xvnc服务器并启动Gnome其他桌面环境的程序,这些环境在VNC桌面上运行。

A started VNC user session can be accessed by the same user from multiple VNC clients. In order to install the TigerVNC server in CentOS/RHEL, open a terminal session and issue the following yum command with root privileges.

$ sudo yum install tigervnc-server
Install TigerVNC in Linux

2. 安装程序后,使用您想要运行VNC程序的用户登录,并在终端中发出以下命令,以便为VNC服务器配置密码。

请注意,密码必须至少包含六个字符。

$ su - your_user
$ vncpasswd
Create VNC Password

3. 接下来,通过在systemd目录树中放置的守护程序配置文件为您的用户添加VNC服务配置文件。为了复制VNC模板文件,您需要以root权限运行以下cp命令

如果您的用户没有授予sudo权限,请直接切换到root账户或从具有root权限的账户运行命令。

# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

4. 下一步,编辑从/etc/systemd/system/目录复制的VNC模板配置文件,并替换以下值以反映您的用户,如下面的示例所示。

代码后面的1表示显示编号(端口5900+显示)。此外,对于每个启动的VNC服务器,端口5900将增加1

# vi /etc/systemd/system/vncserver@\:1.service

将以下行添加到文件vncserver@:1.service中。

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=tecmint
Group=tecmint
WorkingDirectory=/home/tecmint
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1280x1024
PIDFile=/home/tecmint/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
Configure VNC Systemd

5. 在您对VNC服务文件进行了适当的更改后,重新加载systemd系统初始化程序以获取新的vnc配置文件并启动TigerVNC服务器。

同时,检查VNC服务状态,并通过发出以下命令在系统范围内启用VNC守护进程。

# systemctl daemon-reload
# systemctl start vncserver@:1
# systemctl status vncserver@:1
# systemctl enable vncserver@:1
Start VNC Service

6. 要列出VNC服务器拥有的处于监听状态的开放端口,请运行ss命令,该命令用于显示网络套接字。由于您只启动了一个VNC服务器实例,因此第一个开放端口是5901/TCP

再次提醒,必须以root权限执行ss命令。如果您为不同的用户同时启动其他VNC实例,则第二个端口号为5902,第三个端口号为5903,以此类推。端口号6000以上用于允许X应用程序连接到VNC服务器。

# ss -tulpn| grep vnc
Verify VNC Listening Ports

7. 为了允许外部VNC客户端连接到VNC服务器,您需要确保适当的VNC开放端口可以通过您的防火墙。

如果只启动了一个VNC服务器实例,您只需要打开第一个分配的VNC端口:5901/TCP,通过发布以下命令在运行时应用防火墙配置。

# firewall-cmd --add-port=5901/tcp
# firewall-cmd --add-port=5901/tcp --permanent

第2步:通过VNC客户端连接到CentOS桌面

8. 作为一个平台无关的协议,远程图形用户界面VNC连接几乎可以从任何具有GUI和专用VNC客户端的操作系统进行。

A popular VNC client used in Microsoft-based operating systems, fully compatible with Linux TigerVNC server, is the RealVNC VNC Viewer.

为了通过VNC协议从Microsoft操作系统远程连接到CentOS桌面,请打开VNC Viewer程序,添加CentOS VNC服务器的IP地址和端口号,并按下[enter]键。

建立VNC连接后,屏幕上会显示一个警告,指出连接未加密,如下面的截图所示。

VNC Viewer Client
VNC Viewer Client Connection

9.为了绕过警告,请点击Continue按钮,添加在第2点设置的VNC服务器密码,您应该能够远程连接到配置为运行VNC服务器实例的CentOS桌面。

VNC Server User Password
VNC Remote CentOS Desktop

10.如果屏幕上出现新的Authentication消息,而您的用户没有root权限,只需点击Cancel按钮继续进入CentOS桌面,如下面的截图所示。

VNC Server Authentication Warning

请注意,服务器和客户端之间建立的VNC通信以及交换的任何数据(密码除外)都在未加密的通道上运行。为了加密和保护VPN数据传输,首先需要设置一个安全的SSH隧道,并让任何后续的VPN流量通过SSH隧道

11.为了从其他CentOS桌面通过VNC协议远程连接到CentOS桌面,首先请确保您的系统上安装了vinagre软件包,方法是发出以下命令。

$ sudo yum install vinagre

12. 要打开实用程序,请转到应用程序 -> 实用程序 -> 远程桌面查看器,如下图所示。

Open Vinagre Tool

13. 要远程连接到CentOS桌面,请点击连接按钮,从列表中选择VNC协议,并添加远程VNC服务器的IP地址和端口(5900+显示号)。同时,提供为VNC用户设置的密码,如下图所示。

Select Remote Desktop Protocol
Enter Remote VNC Details
Remote VNC CentOS Desktop

14. 另一个流行的基于Linux平台的VNC客户端是Remmina,一个远程桌面客户端,特别用于运行GNOME桌面环境的基于Debian的发行版

要在基于Debian的发行版上安装Remmina远程桌面客户端,请执行以下命令。

$ sudo apt-get install remmina

步骤3:在CentOS上配置多个VNC会话

15. 如果您需要使用同一用户运行新的并行VNC会话,请打开终端控制台,使用您想要启动新VNC会话的用户登录,并执行以下命令。

当您首次启动服务器时,系统会要求您为该会话提供新密码。但是,请注意,此会话以您已登录用户的权限运行,并且独立于已启动的systemd VNC服务器会话。

$ vncserver
Start New VNC Session

16. 新的 VNC 会话将在下一个可用的 VNC 端口打开(例如,在此示例中,显示为 5900+3)。要显示已打开的端口,请按照下面的节选执行不具有 root 权限的 ss 命令。它将仅列出由您的用户拥有的已启动的 VNC 会话。

$ ss -tlpn| grep Xvnc
List VNC Open Ports

17. 现在,使用这个新的 VNC 会话远程连接到 CentOS 桌面,并在 VNC 客户端中提供 IP:端口组合(192.168.1.23:5903),如下图所示。

Connect to VNC Remote Desktop

为了停止使用这些已登录用户权限启动的 VNC 服务器实例,请发出以下命令,而无需任何 root 权限。此命令将销毁仅由启动它们的用户拥有的所有已启动的 VNC 实例。

$ su - your_user
$ killall Xvnc

就是这样!您现在可以通过操作系统提供的图形用户界面访问您的 CentOS 系统并执行管理任务。

Source:
https://www.tecmint.com/install-and-configure-vnc-server-in-centos-7/