如何在CentOS 8上安装和配置VNC

时间:2020-03-05 15:24:32  来源:igfitidea点击:

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

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

准备工作

要遵循本教程,我们需要以具有sudo特权的用户身份在远程CentOS计算机上登录。

安装桌面环境

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

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

sudo dnf groupinstall "Server with GUI"

根据系统,下载和安装Gnome软件包以及相关性可能会花费一些时间。

安装VNC服务器

TigerVNC是积极维护的高性能开源VNC服务器。

在默认的CentOS存储库中可用它来进行安装:

sudo dnf install tigervnc-server

安装VNC服务器后,运行“ vncserver”命令以创建初始配置并设置密码。
运行以下命令时,请勿使用“ sudo”:

vncserver

系统将提示我们输入并确认密码,以及是否将其设置为只读密码。
如果选择设置仅查看密码,则用户将无法使用鼠标和键盘与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/theitroad/.Xauthority does not exist
New 'server2.theitroad.com:1 (theitroad)' desktop at :1 on machine server2.theitroad.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/theitroad/.vnc/server2.theitroad.com:1.log

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

注意上面输出中主机名后面的“:1”。

这指示正在运行VNC服务器的显示端口号。
在我们的例子中,服务器在TCP端口'5901'(5900 + 1)上运行。
如果创建第二个实例,它将在下一个空闲端口上运行,例如:':2',这意味着服务器在端口'5902'(5900 + 2)上运行。

要记住的重要一点是,在使用VNC服务器时,':X'是表示'5900 + X'的显示端口。

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

vncserver -kill :1
Killing Xvnc process ID 19681

配置VNC服务器

现在,在远程CentOS机器上都安装了Gnome和TigerVNC,下一步是将TigerVNC配置为使用Gnome。
创建新桌面时,VNC服务器使用“~/.vnc/xstartup”文件启动应用程序。
打开文件:

vim ~/.vnc/xstartup

并按如下所示进行编辑:

~/.vnc/xstartup

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

保存并关闭文件 。

每当我们启动或者重新启动TigerVNC服务器时,以上脚本都会自动执行。

如果要将其他选项传递给VNC服务器,请打开“~/.vnc/config”文件,然后每行添加一个选项。

文件中列出了最常用的选项。
取消注释并根据自己的喜好进行修改。

这是一个例子:

~/.vnc /配置

# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared

创建一个Systemd单位文件

单位文件使我们可以轻松启动,停止和重新启动服务。
通常,存储用户单元文件的最佳位置是'~/.config/systemd/user'。
创建目录:

mkdir -p ~/.config/systemd/user

复制默认的vncserver单元文件:

cp /usr/lib/systemd/user/[email protected] ~/.config/systemd/user/

通知systemd一个新的用户单元文件存在:

systemctl --user daemon-reload

启动VNC服务并在启动时启用它:

systemctl --user enable vncserver@:1.service --now

“ @:”后面的数字“ 1”定义了VNC服务将在其上监听的显示端口。
我们正在使用'1',这意味着VNC服务器将在上一节中讨论的端口'5901'上进行侦听。

启用延迟,以便用户服务在启动时启动,并在用户未登录时保持运行:

loginctl enable-linger

验证服务是否成功启动:

systemctl --user status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/home/theitroad/.config/systemd/user/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-01-30 22:14:08 UTC; 2s ago
  Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)
  Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
   CGroup: /user.slice/user-1000.slice/[email protected]/vncserver.slice/vncserver@:1.service
  ...

连接到VNC服务器

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

在Linux和macOS上设置SSH隧道

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

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

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

不要忘记用用户名和服务器的IP地址替换“用户名”和“ server_ip_address”。

在Windows上设置SSH隧道

Windows用户可以使用PuTTY设置SSH隧道。

打开Putty,然后在“主机名或者IP地址”字段中输入服务器的IP地址。

在“连接”菜单下,展开“ SSH”,然后选择“隧道”。
在“源端口”字段中输入VNC服务器端口(“ 5901”),在“目标”字段中输入“ server_ip_address:5901”,然后单击“添加”按钮,如下图所示:

返回“会话”页面以保存设置,这样我们无需每次都输入它们。
要登录到远程服务器,请选择已保存的会话,然后单击“打开”按钮。

使用Vncviewer连接

要连接到远程服务器,请打开VNC查看器,然后输入'localhost:5901'。

我们可以将任何VNC查看器(例如TigerVNC,TightVNC,RealVNC,UltraVNC,Vinagre和VNC查看器)用于Google Chrome浏览器。

我们正在使用TigerVNC:

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

现在,我们可以使用键盘和鼠标从本地计算机开始在远程桌面上工作。