如何在CentOS 8上配置VNC服务器
在本文中,我们将看到如何 在CentOS 8服务器计算机上设置和配置VNC服务器,以允许来自任何VNC客户端(例如TightVNC,RealVNC等)的远程连接。更具体地说,我们将使用tigervnc-server 软件进行此操作,该软件是一个免费工具,可以执行此操作。
在继续之前,让我们简要回顾一下VNC的含义。
介绍
首字母缩写词VNC代表虚拟网络计算 ,是服务器-客户端协议,允许客户端计算机(运行VNC客户端)连接并控制远程计算机(由VNC服务器提供动力)。该软件最初是由英国剑桥的 Olivetti&Oracle Research Lab 作为 开放源代码 计划开发的,其源代码直到今天仍可根据 GNU通用公共许可使用。
根据VNC服务器软件的不同,客户端将连接到当前活动的运行时桌面(例如Teamviewer 或AnyDesk等“现代”软件 )或独立的虚拟桌面,就像Windows远程桌面 RDP协议一样:后者行为可以说是功能更强大,更安全,尤其是在我们需要控制服务器计算机的情况下,因为每个会话都是一个由连接的用户的权限和授予配置的唯一环境。这就是为什么我们选择TigerVNC的原因 ,它通过启动计算机桌面环境的并行会话(Gnome,KDE 或其他GUI)在连接客户端的VNC桌面上:这基本上意味着将为每个单独的连接创建一个独立的虚拟桌面-这正是我们想要的。
关闭SElinux(步骤略)
安装TigerVNC
现在我们知道了我们在说什么,让我们看看如何在CentOS环境下设置和配置 TigerVNC。首先要做的是通过打开终端会话并使用root特权发出以下命令来安装tigervnc-server软件包:
$ sudo yum install tigervnc-server
之后,您应该创建一个专用的VNC用户进行连接(使用专用密码)。
为此,请键入以下内容:
$ sudo adduser vncuser
$ sudo passwd vncuser
我们只说一次:永远不要对root用户这样做。为root用户启用VNC会对您的系统造成严重的安全风险,通常需要避免这种风险。像上面示例中的那样,让 root用户脱离VNC并配置具有受限权限的专用帐户绝对是一个更好的选择。
创建vncuser 及其登录密码后,还需要为该用户设置VNC唯一密码。可以使用以下命令完成此操作:
$ su - vncuser
$ vncpasswd
(如果我们实际上事先与vncuser连接,则可以省略第一行 )。
接下来要做的是为vncuser创建一个VNC配置文件:最快的方法是复制VNC通用模板文件(位于/ lib / systemd / system /文件夹中),然后根据我们的要求对其进行修改。需要:
$ cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:1.service
我们在新文件名中输入的“ 1”是将用于该特定服务实例的显示号。知道这一点很重要,因为它还会确定VNC服务器将侦听的TCP端口,即5900 +显示号:第一个是5901,然后是5902,依此类推。
复制之后,您需要使用vi,nano或其他文本编辑器编辑新文件,并将[USER]占位符替换为不久前创建的用户名(在我们的场景中为vncuser)。这是文件在更新后的外观(减去开头的长注释部分):
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper vncuser %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
一旦这样做,您就可以重新加载VNC守护程序并使用以下命令启动vncserver @ 1:
$ systemctl daemon-reload
$ systemctl start [email protected]:1
在继续之前,最好通过发出systemctl status命令来检查服务是否正在运行……
$ systemctl status [email protected]:1
…并使用以下命令创建符号链接,使其始终在系统启动时执行:
$ systemctl enable [email protected]:1
尝试连接到我们的服务器之前,您可以执行的另一项检查是使用ss命令查看活动的网络套接字 :如果一切正常,您应该会看到VNC服务器正在运行并且正在侦听TCP 5901端口。
这是要执行的命令...
$ ss -tulpn| grep vnc
1
……这应该是结果:
tcp LISTEN 0 5 0.0.0.0:5901 0.0.0.0:* users:(("Xvnc",pid=6461,fd=6))
tcp LISTEN 0 5 [::]:5901 [::]:* users:(("Xvnc",pid=6461,fd=7))
如果您看到此消息,则表示一切都已正确设置。
防火墙配置
由于我们的VNC服务正在侦听TCP 5901端口,因此您需要确保该端口已打开并且可由外部客户端访问:因此,如果安装了防火墙,则应创建适当的规则以允许VNC客户端进行连接。
打开多少个端口将取决于您将需要多少个VNC服务器实例:在我们的方案中,您只做了1个,因此,您只需要打开第一个分配的VNC端口:TCP 5901,就像我们说的那样。这是在firewalld上打开该端口的命令 :
# firewall-cmd --add-port=5901/tcp
# firewall-cmd --add-port=5901/tcp --permanent
不用说,您也可以将该端口限制为特定组,IP地址,网卡或其他简单或复杂的防火墙规则:这完全取决于您,具体取决于您的网络环境的配置以及您希望获得多少安全性。
安装GUI
如果您已经在我们的系统上安装了GNOME,KDE或其他桌面环境,则可以跳过此步骤,否则,您需要添加一个:TigerVNC服务器将为每个登录会话启动给定桌面环境的并行实例,这意味着我们需要一个-否则将无法正常工作。
GNOME
如果您确实想要出色的(但重量级的)GNOME,请输入以下内容:
$ sudo yum groupinstall "GNOME Desktop"
如果您想要一个轻量级的替代方案,我们建议使用Xfce,这是一个免费的开源桌面环境,适用于与TigerVNC完美结合的类Unix平台。不要在这里误解我们,GNOME也可以很好地工作,但是它占用大量的空间和资源:如果您想在服务器上节省资源,Xfce无疑是一个更好的选择。
要安装它,请键入以下内容:
$ yum install epel-release
$ yum groupinstall xfce
Xfce的其他设置
如果选择使用Xfce,则还需要更改文件以在VNC会话启动时执行。为此,请编辑/home/<user>/.vnc/xstartup文件,并将exec条目(通常是第4行)从 etc / X11 / xinit / xinitrc更改为startxfce4,如下所示:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
vncserver -kill $DISPLAY
就是这样
与VNC客户端连接
现在,一切都已正确设置,我们可以尝试使用VNC客户端(例如TightVNC,UltraVNC,RealVNC等)连接到我们的VNC服务,然后看看会发生什么。只要记住指定端口TCP 5901(如果您已遵循我们的指南)即可。