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


推荐阅读
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
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社区 版权所有