作者:学生联盟v | 来源:互联网 | 2024-11-18 09:22
背景:
· 公司研发团队通过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重启服务器即可实现升级