文章目录

  • VNC简介
  • 安装TigerVNC
  • 防火墙设置
  • 安装图形用户界面(GUI)
  • Xfce
  • 修改配置文件
  • VNC 客户端连接
  • 关闭VNC服务
  • 删除Xfce
  • 参考文档



如果你图形界面使用GNOME,看这里:Centos7安装和配置VNC服务器 - GNOME篇

VNC简介

VNC(Virtual Network Computing),为一种使用RFB协议的屏幕画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的屏幕画面。

VNC与操作系统无关,因此可跨平台使用,例如可用Windows连线到某Linux的电脑,反之亦同。甚至在没有安装客户端程序的电脑中,只要有支持JAVA的浏览器,也可使用。

VNC由Olivetti & Oracle研究室所开发,此研究室在1999年并入美国电话电报公司(AT&T)。AT&T于2002年中止了此研究室的运作,并把VNC以GPL发布。

因为它是免费的,以及可用于数量庞大的不同操作系统,它的简单,可靠,和向后兼容性,使之进化成为最为广泛使用的远程控制软件,多平台的支持对网络管理员是十分重要的,这使得网络管理员可以使用一种工具管理几乎所有系统。

安装TigerVNC

sudo yum install tigervnc-server

注意! 为了系统安全不建议使用root用户,所以创建专门用于vnc的用户。
创建用户vncuser

sudo adduser vncuser

设置密码

sudo passwd vncuser

比如:我这里设置的密码是2021@vnc

创建 vncuser 并设置登录密码后,还需要为此用户设置唯一的 VNC 密码

su - vncuser
vncpasswd

比如:我这里设置的密码是2021@vncpass

Would you like to enter a view-only password (y/n)? n

(您想输入一个仅供查看的密码吗?)我不需要,根据实际情况选择。

我的详细操作如下:

centos 重启Vnc 服务 centos7vnc服务_centos 重启Vnc 服务


为 vncuser 创建一个 VNC 配置文件。

下面命令如果没有特别说明,默认使用root用户执行。

su root

这样做的最快方法就是复制位于/lib/systemd/system/文件夹中的共享 VNC模板文件,然后更改它:

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

这里新文件中的数字1将用与此服务特定实例的显示编号,这一点很重要。因为它还将确定我们的 VNC 服务器将使用的 TCP 端口,等于 5900 + 显示编号。第一个是5901,然后是5902,等等。

vim /etc/systemd/system/vncserver@:1.service

centos 重启Vnc 服务 centos7vnc服务_linux_02


我的配置如下:

[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

centos 重启Vnc 服务 centos7vnc服务_linux_03


查询当前服务是否正常启动:

systemctl status vncserver@:1

centos 重启Vnc 服务 centos7vnc服务_服务器_04


设置开机启动

systemctl enable vncserver@:1

在尝试连接到服务器之前,您可以执行的另一个测试是使用ss命令查看活动网络套接字:如果一切工作正常,您应该会看到 VNC 服务器工作正常并使用 TCP 端口 5901。执行命令:

ss -tulpn| grep vnc

centos 重启Vnc 服务 centos7vnc服务_centos_05


如果看到这一点,则所有内容都设置正确。

防火墙设置

由于我们的 VNC 服务正在 TCP 端口 5901 上侦听,所以防火墙必须放行。不建议直接简单粗暴的关闭防火墙。

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

可参考:《CentOS7防火墙管理与配置》

安装图形用户界面(GUI)

如果已经安装了GNOME,KDE或其他桌面环境,则可以跳过此步骤。否则,您需要安装其中之一:TigerVNC服务器将为每个登录会话启动此桌面环境的并行实例,这意味着我们必须至少具有一个GUI。

注意:下面我把GNOME 和 Xfce的安装方法把列出来了,这两个2选1 就可以了不需要两个都安装。

如果你不知道选择哪个桌面环境,如果你是日常办公,是自己的电脑个人觉得使用 GNOME更好一些,因为它集成了很多好用的东西。
如果你只是给服务器安装一个简单的图形界面临时使用,比如只是安装oracle用。我建议使用Xfce,因为它很小,很轻。

如果你图形界面使用GNOME,看这里:Centos7安装和配置VNC服务器 - GNOME篇

Xfce

如果您需要一个轻量级的替代方案,我们可以为与 TigerVNC 合作出色的 Unix 平台提供免费的开源环境。GNOME 也工作得很好,但它资源密集:如果您想要在服务器计算机上节省资源,Xfce 可能是最佳选择。要安装它,请输入以下内容:

yum install epel-release
yum groupinstall "Xfce" -y

如果你使用中文界面还是要安装一下中文字体的,不然会中文乱码。

yum install cjkuni-ukai-fonts

修改配置文件

切换到vncuser用户

su - vncuser

修改配置文件~/.vnc/xstartup

vim ~/.vnc/xstartup

Xfce 修改如下,GNOME不用修改。

/etc/X11/xinit/xinitrc修改为startxfce4

#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4
vncserver -kill $DISPLAY

理论上这样就可以了,如果发现连接上去只有鼠标看不到别的,则重启一下VNC服务。
关闭服务

systemctl stop vncserver@:1

开启服务

systemctl start vncserver@:1

VNC 客户端连接

现在,一切都已设置,我们可以尝试连接到我们的 VNC 服务使用 VNC 客户端,如 TightVNC,UltraVNC 或 RealVNC,VNC Viewer。请记住指定 TCP 端口 5901(如果您遵循我们的指南)。

个人使用的是VNC Viewerhttps://www.realvnc.com/en/connect/download/viewer/

centos 重启Vnc 服务 centos7vnc服务_centos_06


地址栏输入172.16.184.5:5901然后直接回车,

centos 重启Vnc 服务 centos7vnc服务_Xfce_07


出现弹框就点确认,出现输入密码就输入密码。

centos 重启Vnc 服务 centos7vnc服务_服务器_08

效果如下:

centos 重启Vnc 服务 centos7vnc服务_centos_09

关闭VNC服务

有些时候VNC服务一年也使用不了几次,比如:我在安装oracle的时间会开启 VNC服务,安装完我就用不到了。开启反而浪费服务器资源。

关闭服务

systemctl stop vncserver@:1

开启服务

systemctl start vncserver@:1

查看服务状态

systemctl status vncserver@:1

设置开机启动

systemctl enable vncserver@:1

取消开机启动

systemctl disable vncserver@:1

删除Xfce

如果您已经在服务器上安装了GUI,并且意识到这是一个严重的错误,请不要担心!我们也可以通过简单地使用yum删除“ Xfce Desktop”软件包组来撤销此操作

yum groupremove "Xfce"

仔细阅读将要删除的软件包,并确保在删除软件包或依赖项之前看起来正确。