1.准备好yum源
除了centos源,还需要一个epel
# yum install epel-release
2 安装X Window system (本地光盘源)
yum groupinstall "X Window system"
3 安装Xfce4 (epel源)
yum install -y xfce4-* xfwm konsole thunar xfwm4-themes oxygen-* xfdesktop.x86_64 lightdm
4 关闭防火墙和selinux
[root@vnc ~]# systemctl stop firewalld [root@vnc ~]# setenforce =0 [root@vnc ~]# vim /etc/selinux/config |
5.安装字体包
[root@vnc ~]# yum groupinstall "Fonts" -y |
6.安装realvnc
[root@vnc ~]# yum localinstall VNC-Server-6.7.4-Linux-x64.rpm [root@vnc ~]# vnclicense -add Z456C-LMKTC-NLGWQ-H5CUR-ZVWEA |
7.设置默认启动图形界面
# /etc/X11 存放与 x windows 有关的设置 [root@vnc ~]# echo xfce4-session >> /etc/X11/Xsession 重启两个服务 |
8.realvnc服务 一共有两个服务
systemctl start vncserver-x11-serviced.service |
8.这里涉及到RealVNC的两种工作模式:
virtual模式: 该模式允许所有非Root权限用户连接服务器桌面(用户与用户间的桌面相互独立、多个VNC Viewer可以使用相同用户名连接相同的桌面),在使用VNC Viewer连接时需要输入虚拟端口号5999 | x11模式: 该模式只允许具有Root权限的用户登录,相当于镜像了服务器的外接显示器,在使用VNC Viewer连接时不需要输入虚拟端口号 |
9.创建针对所有用户的统一配置文件,并设置读写权限
touch /etc/vnc/config.d/common.custom chmod 644 /etc/vnc/config.d/common.custom vim /etc/vnc/config.d/common.custom # 禁止用户配置VNC的选项菜单 DisableOptions=FALSE # 禁止与服务器互传文件 # 禁止与服务器剪切板进行信息交互 # 禁止非Root用户访问普通用户的VNC配置文件 # 禁止从用户界面手动更新 # 禁止检测更新 # 禁止访客登录 1440x900,1280x800,1366x768,1024x768,800x600,1280x1024,3440x1440 其他 # 禁止用户之间聊天对话 EnableChat=0 # 禁止通过VNC将服务器文件打印到本机打印机 EnableRemotePrinting=0 # 禁用用户体验改进计划(收集运行数据传到VNC官网) EnableAnalytics=0 # X11模式下,禁止在显示器弹出连接确认框 QueryConnect=0 # 禁止用户从图形界面进行反向连接 DisableAddNewClient=1 更多关键字请参考官网:https://help.realvnc.com/hc/en-us/articles/360002251297-VNC-Server-Parameter-Reference- 备注:如果需要为某个用户单独设置权限,需要在该用户环境下创建 ~/.vnc/config.d/common 并添加相关策略;用户目录下的common文件比统一配置文件common.custom的优先级高 如果不想让用户自己定义的配置文件越权(比如全局配置文件要求禁止传输文件,而用户自己配置的规则是可以传输文件,因用户配置文件优先级比全局配置文件高,所以是可以传输文件的),为避免这种情况,RealVNC官方给出了配置优先级最高的方法: · 创建policy.d目录: mkdir /etc/vnc/policy.d · 创建restrictions文件:echo 'BlockNonPolicyServers=0' > /etc/vnc/policy.d/restrictions · 将之前定义过的common.custom拷贝到级别更高的配置文件(或直接配置vncserver-x11-virtual): cp /etc/vnc/config.d/common.custom /etc/vnc/policy.d/vncserver-x11-virtual 优先级:vncserver-x11-virtual > 用户自定义common > 全局common.custom |
10.日常维护
10-1:RealVNC默认会在用户连接时创建虚拟桌面、在用户断开时结束桌面,如果想让用户在退出时保持桌面状态,需修改配置文件
# 将ConnectToExisting参数写入到配置文件 echo 'ConnectToExisting=1' | tee -a /etc/vnc/config.d/vncserver-virtuald # 重启服务以生效 systemctl restart vncserver-virtuald |
10-2:桌面长期运行、用户在UI误操作可能导致桌面卡死,或是无法连接,此时需要kill掉用户对应的虚拟桌面
# 执行 su - 用户名 切换到用户目录 # 执行ll ~/.vnc/ 会显示与以下类似页面: drwx------ 2 vnc vnc 58 4月 15 13:54 config.d -rw------- 1 vnc vnc 53140 4月 15 13:20 localhost.localdomain:1.log -rw------- 1 vnc vnc 17019 4月 18 11:34 localhost.localdomain:2.log -rw------- 1 vnc vnc 5 4月 18 11:34 localhost.localdomain:2.pid -rw------- 1 vnc vnc 18952 4月 15 13:54 localhost.localdomain:3.log -rw------- 1 vnc vnc 2824 4月 15 11:45 private.key -rw------- 1 vnc vnc 50 4月 15 12:00 vncchat.xml # 根据时间信息找到最新创建的pid文件:localhost.localdomain:2.pid,其中的2就是虚拟桌面号 # 执行命令将其结束:vncserver -kill :2 |