在Rocky Linux 8中安装VNC服务器

2,246 阅读6分钟

在这篇文章中,我们学习如何在Rocky Linux 8上安装和配置VNC服务器,然后用另一台机器连接到服务器。

目录。

  1. 简介。
  2. 在服务器上安装GNOME桌面环境。
  3. 启动VNC服务器。
  4. 建立一个SSH隧道。
  5. 桌面环境。
  6. 总结。

简介。

VNC(虚拟网络计算)是一个屏幕共享的客户-服务器系统。系统管理员和支持人员使用它来解决远程计算机上的问题,而不必亲自到现场。VNC应用包括TeamViewer、Anydesk、TigerVNC、TightVNC等。

VNC服务器是一台安装有VNC服务器软件组件的主机。我们使用另一台装有VNC客户端软件组件的主机来访问这个主机,也被称为VNC浏览器。使用VNC客户端,我们可以在服务器主机上远程执行操作,就像我们就在主机的显示器前一样。

我们演示如何在客户端安装和配置VNC客户端/VNC浏览器,在服务器上安装VNC服务器软件组件,并在Rocky Linux 8中设置图形用户界面。 我们使用TigerVNC - 一个用于共享桌面的开源系统。它允许我们控制远程计算机。

对于这个安装,我们需要运行一个基于RHEL的Linux操作系统,并且在两个系统上都有sudo权限。

我们将在基于RHEL的机器上安装VNC服务器组件--192.168.100.75,然后使用基于Debian的客户端系统--192.168.100.66连接到这个服务器,在那里我们将安装tigervnc客户端。
更新软件包。
在任何安装之前,我们应该更新和升级目前安装在系统中的软件库和软件包,以防止以后出现任何问题。

$ sudo dnf check-update
$ sudo dnf update -y

安装VNC服务器组件。
如前所述,我们将使用TigerVNC。在这方面,我们使用下面的命令在这个服务器上安装TigerVNC服务器组件。

$ sudo dnf install tigervnc-server -y

image7-2

在服务器上安装GNOME桌面环境。

当我们连接到远程服务器时,我们希望使用一个图形用户界面,如GNOME、cinnamon、Xfce等。如果你目前正在运行一个没有图形用户界面的RHEL系统,那么我们在这个服务器上安装GNOME桌面环境和其他图形用户界面所需的软件包。如果你已经使用了GNOME桌面环境,这一步就不需要了。

$ sudo dnf groupinstall "Server with GUI" -y

我们使用了groupinstall选项来安装整个包组,其中GNOME包也是可用的。稍后,我们将看到如何安装另一个流行的桌面环境。

一旦软件包组安装完成,我们通过编辑位于主目录下的 ~/.vnc/config 文件,将 GNOME 桌面环境设置为 VNC 连接时的默认会话。

$ sudo vim ~/.vnc/config

当该文件被打开时,我们粘贴以下配置。

session=gnome
geometry=1920X1200
localhost
alwaysshared

image12

我们已经指定会话的值为gnome。然而,这是很灵活的。我们可以决定使用任何其他的桌面环境。我们只需要下载它的软件包,并把它的名字作为会话的值。例如,如果我们要使用cinnamon桌面环境,我们将把会话的值改为cinnamon。

我们还指定屏幕分辨率为1920 x 1200。我们也可以根据我们的需要来改变这个。Localhost指定的是这个服务器的主机名。最后,alwaysshared说明多个用户可以同时连接,这意味着会话是可以共享的。

创建一个VNC用户。
在本教程中,我们创建一个名为vncuser的用户用于学习。

$ sudo adduser vncuser
$ sudo passwd vncuser

完成上述操作后,我们使用su命令切换到新创建的账户,并配置一个VNC密码,这个用户将使用VNC客户端连接到这个服务器。为此,我们执行vncpasswd命令,如图所示。

$ su - vncuser
$ vncpasswd

image9-2

从上面的会话中,注意到有关只允许查看的密码的提示。它决定了用户(如vncuser)是否可以在会话中向该服务器发送任何鼠标点击或键盘敲击。如果我们选择y,vncuser就不能进行鼠标或键盘操作。在这种情况下,我们选择n选项,意味着我们可以向远程系统发送键盘或鼠标划动。

给用户分配端口。

在创建一个用户之后,我们必须分配一个端口号。端口是计算机之间的通信端点。在这种情况下,我们需要客户系统在我们指定的端口上与这个服务器通信。为了给我们的用户vncuser分配一个端口号,我们编辑/etc/tigervnc/vncserver.users文件并添加以下一行。

:1=vncuser

$ sudo vim /etc/tigervnc/vncserver.users

image14-1

注意,从文件中我们把用户分配给了数字,前面有一个冒号-- :1.这意味着一个特定的用户,例如vncuser,将在5901端口连接到这个服务器。这个端口编号是递增的。例如, :2映射到端口5902, :3映射到端口5903,以此类推。在这个例子中,如果我们取消了 :2=andrew,这个用户将在VNC连接中使用5902端口连接到服务器。

为了使所做的修改生效,我们要重新加载systemd守护进程,方法是:
$ sudo systemctl daemon-reload

允许VNC连接通过防火墙。
在VNC服务器服务能够发送和接收数据之前,我们需要确保防火墙能够接受来自客户端的VNC连接。为此,我们需要使用firewalld工具来操作防火墙规则。

$ sudo firewall-cmd --zone=public --permanent --add-service=vnc-server
这里我们允许VNC服务通过防火墙,并通过使用permanent选项使其永久化,这样当系统重新启动时,这些变化将保持不变。在这一改变之后,我们重新加载防火墙,这样改变就可以生效了。

$ sudo firewall-cmd --reload

启动VNC服务器。

在完成所有配置后,现在是在服务器上启动服务的时候了。为此,我们使用以下命令。

$ sudo systemctl start vncserver@:1.service		[ start the service ]
$ sudo systemctl status vncserver@:1.service 	[ make sure it started ]

image17

如果在上述操作之后,服务仍然没有启动,我们可以编辑/etc/gdm/custom.conf文件,取消对 "Wayland=false "的注释,如下所示。

$ sudo vim /etc/gdm/custom.conf

image18

在Rocky Linux中,GNOME是默认的桌面环境。它使用Wayland显示管理器。然而,Wayland显示管理器不是一个远程渲染API,所以我们禁用它来使登录屏幕使用Xorg。

在取消注释后,我们重新启动gdm服务,这样改变就可以生效了。

$ sudo systemctl restart gdm.service

如果我们经常使用这个服务,我们可以通过执行该命令将其配置为在系统启动时自动启动。

$ sudo systemctl enable vncserver@:1.service

要撤消这一点,我们使用禁用选项。

$ sudo systemctl disable vncserver@:1.service

建立一个SSH隧道。

SSH隧道/SSH端口转发涉及在客户端和服务器之间建立一个加密的连接。VNC是不安全的。因此,我们使用SSH隧道对两个系统之间的通信进行加密。

为了增加客户端和服务器之间的信任,我们还可以配置SSH无密码登录。

现在,为了在两个系统之间创建一个隧道,我们执行命令。

$ ssh -L 5900:127.0.0.1:5901 -N -f -l [username] [ip address]

image15

从命令中,我们在127.0.0.1主机上指定了5900端口,在远程服务器上使用-L选项指定了5901端口。我们使用-N选项来防止执行来自远程系统的命令。它告诉ssh只转发端口。-l选项指定了登录到远程主机的用户。

为了提高速度,我们可以使用-C选项来压缩数据,使其更小。
[username] [ipaddress] 指定我们用来登录远程服务器的用户名,然后是它的IP地址。
要想知道更多的ssh命令选项,我们执行$ man ssh in Linux。
安装VNC客户端。

在另一个Linux客户端系统上,我们安装VNC客户端/VNC viewer客户端组件。在这篇文章中,我们的重点是TigerVNC,所以我们安装tigervnc软件包。

我们将使用这个主机连接到我们在上一节中配置的服务器。要安装Tiger VNC浏览器,我们执行以下命令:
在RHEL和Fedora上
:在Debian和Ubuntu上:在Debian和Ubuntu上:在Debian和Ubuntu上:在Debian和Ubuntu上:在Debian和Ubuntu上

$ sudo dnf install tigervnc -y

在Debian和Ubuntu上。

$ sudo apt-get install tigervnc-viewer -y

在这个操作之后,我们应该期望看到在应用程序启动器中创建一个新的图标。
image16

为了从客户端连接VNC服务器,我们首先使用vncviewer命令或直接使用GUI应用程序启动器启动该应用程序。

$ vncviewer

你应该期望看到一个像下面这样的屏幕。
image3-2

在服务器输入栏中,我们输入远程服务器的IP地址,然后是一个端口号,如上图所示,用冒号隔开。

在我们的例子中,它是192.168.100.75,端口是5901,所以我们写:
192.168.100.75:5901。确保使用你的详细信息,这样才能发挥作用。
之后,我们有一个密码提示。在这里,我们输入之前在关于创建用户的章节中配置的VNC密码。
image5-1

如果证书是正确的,我们就会被连接,如下图所示。
image4-1

桌面环境。

我们已经看到如何配置和使用GNOME桌面环境。我们还可以配置其他的桌面环境,如plasma、Xfce、cinnamon等。
要查看当前安装的桌面环境,我们列出/usr/share/xsessions目录的内容。

$ ls /usr/share/xsessions/

配置XFCE桌面环境。

让我们来配置一个XFCE桌面环境。除了非常友好和直观之外,Xfce也是轻量级的,快速的,而且消耗的系统资源很少。

为了安装它,我们首先通过执行命令安装EPEL(Extra packages for Enterprise Linux)。

$ sudo dnf install -y epel-release

image2-2

就像我们之前安装GNOME一样,我们安装XFCE包组,其中也有XFCE桌面环境包。

$ sudo dnf groupinstall -y "Xfce"

image6-2

安装完成后,下一步是将~/.vnc/config文件中的会话值改为Xfce,如图所示。

$ sudo vim ~/.vnc/config

image1-1

在这个操作之后,我们重新启动服务器上的服务。

$ sudo systemctl restart vncserver@:1.service

现在当我们连接时,我们将使用XFCE的桌面环境。

同样,我们可以安装和配置其他的桌面环境,比如;Budgie-desktop、cinnamon、cinnamon2d、gnome-classic、gnome-custom-session、gnome-Xorg、mate、Openbox、plasma、Xfce、xinit-compat等等。

我们通过两个简单的步骤完成这个工作。首先,我们安装指定的桌面环境包,然后编辑主目录下的vnc配置文件。

总结。

我们看到了如何在客户端和服务器主机上安装VNC服务器和客户端软件组件,如何配置图形环境,允许VNC服务通过防火墙,并使用SSH隧道确保连接安全。

请注意,这种安装并不限于TigerVNC。我们也可以把学到的东西应用于其他的VNC安装,如TightVNC、RealVNC、UltraVNC等。
我们用VNC来管理远程系统并排除它们的问题。它采用客户-服务器模式,客户连接到安装了vnc-server组件的服务器。