热门标签 | 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重启服务器即可实现升级


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
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社区 版权所有