在本文中,我们将看到如何 在CentOS 7/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/vncserver@.service  /etc/systemd/system/vncserver@: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 vncserver@:1
 
在继续之前,最好通过发出systemctl status命令来检查服务是否正在运行……
 
$ systemctl status vncserver@:1
 
…并使用以下命令创建符号链接,使其始终在系统启动时执行:
 
$ systemctl enable vncserver@: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(如果您已遵循我们的指南)即可。

centos7 在KVM服务器上启动vncserver服务 centos8 vncserver_客户端