热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS7通过RealVNC实现多人使用服务器桌面

背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&#

背景:

· 公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作

· 为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略


过程:

一、安装CentOS7.9系统,并在安装过程中选择GNOME桌面(该桌面对开发环境兼容较好)

二、禁用SELINUX及防火墙(如安全需求高可以不禁用)

# 禁用SELINUX
sed -ri /^SELINUX=/'s/(SELINUX=).*/\1disabled/' /etc/selinux/config# 禁用防火墙
systemctl disable firewalld# 重启系统生效
reboot

三、下载及安装RealVNC  官网链接:最新版安装包下载地址

# 从官方下载安装包
wget -P /tmp https://www.realvnc.com/download/file/vnc.files/VNC-Server-6.9.1-Linux-x64.rpm# 安装
yum install -y /tmp/VNC-Server-6.9.1-Linux-x64.rpm# 导入授权Key
vnclicense -add Z456C-LMKTC-NLGWQ-H5CUR-ZVWEA

四、安装并启用Xorg

# 安装Xorg
yum install xorg-x11-drv-dummy# 为所有用户启用Xorg(需要以root账户运行,在对话框中输入y)
vncinitconfig -enable-system-xorg

五、配置Gnome桌面专用的配置文件 官网链接:其他桌面的配置参数

执行 vi /etc/vnc/xstartup.custom 将以下内容写入进去#!/bin/sh
DESKTOP_SESSION=gnome-classic
export DESKTOP_SESSION
env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic
vncserver-virtual -kill $DISPLAY

给配置文件设置可执行权:
chmod +x /etc/vnc/xstartup.custom

六、部署RealVNC服务

6-1:这里涉及到RealVNC的两种工作模式:


virtual模式:

该模式允许所有非Root权限用户连接服务器桌面(用户与用户间的桌面相互独立、多个VNC Viewer可以使用相同用户名连接相同的桌面),在使用VNC Viewer连接时需要输入虚拟端口号99

x11模式:

该模式只允许具有Root权限的用户登录,相当于镜像了服务器的外接显示器,在使用VNC Viewer连接时不需要输入虚拟端口号

备注:两种模式既可以单独运行,也可以同时运行

6-2:启动virtual模式下的RealVNC,并将其设置为开机自启

# 启动virtual模式的RealVNC
systemctl start vncserver-virtuald.service# 将其设置为开机自启动
systemctl enable vncserver-virtuald.service

6-3:启动x11模式下的RealVNC,并将其设置为开机自启 (如果不需要控制服务器显示器的话,该步骤可以忽略)

# 启动x11模式下的RealVNC
systemctl start vncserver-x11-serviced.service# 将其设置为开机自启动
systemctl enable vncserver-x11-serviced.service

七、创建远程桌面用户

# 新建用户
useradd 用户名# 修改密码
echo "用户名:用户密码" | chpasswd备注:该版本的RealVNC通过系统用户名及密码进行验证,所以无需通过vncpasswd单独为用户设置密码

八、验证连接

通过VNC Viewer连接服务器后,通过上一步新建的用户名测试可用性  官网链接:最新版VNC Viewer下载地址

九、统一设置

9-1:创建针对所有用户的统一配置文件,并设置读写权限

touch /etc/vnc/config.d/common.custom; chmod 644 /etc/vnc/config.d/common.custom

9-2:根据公司保密需求,设置所有用户不能传输文件、不能使用粘贴板   官方网站:参数说明

编辑配置文件 vi /etc/vnc/config.d/common.custom 选择性将以下参数添加进去# 指定VNC窗口标题(支持系统变量)
Desktop=$HOSTNAME:$USER# 禁止从用户界面停止VNC服务器
DisableClose=1# 禁止检测更新
EnableAutoUpdateChecks=0# 禁止用户之间聊天对话
EnableChat=0# 禁止从用户界面手动更新
EnableManualUpdateChecks=0# 禁止通过VNC将服务器文件打印到本机打印机
EnableRemotePrinting=0# 禁止访客登录
GuestAccessEnable=0# 禁止与服务器互传文件
ShareFiles=0# 禁止用户从图形界面进行反向连接
DisableAddNewClient=1# 禁止用户配置VNC的选项菜单
DisableOptions=1# 禁止与服务器剪切板进行信息交互
SendCutText=0# X11模式下,禁止在显示器弹出连接确认框
QueryConnect=0# 禁止非Root用户访问普通用户的VNC配置文件
RootSecurity=1# 禁用用户体验改进计划(收集运行数据传到VNC官网)
EnableAnalitycs=0

备注:如果需要为某个用户单独设置权限,需要创建 ~/.vnc/config.d/common 并添加相关策略;用户目录下的common文件比统一配置文件common.custom的优先级高

十、日常维护

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

10-3:升级VNC服务器

按本文第3步下载并安装最新版VNC Server(无需重复导入授权Key),然后reboot重启服务器即可实现升级


推荐阅读
author-avatar
学生联盟v
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有