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

背景:

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

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

安装过程:

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

二、系统安装完成后禁用SELINUX及防火墙(如安全需求高可以不禁用)

# 禁用SELINUX
sed -ri /^SELINUX=/'s/(SELINUX=).*/\1disabled/' /etc/selinux/config

# 禁用防火墙(也可不禁用,因为VNC Server安装过程中会将自身添加到防火墙放行列表)
systemctl disable firewalld; systemctl mask firewalld

# 重启系统生效
reboot

三、下载及安装RealVNC  附: 最新安装包官网下载地址​​​​​​

2023年2月1日发现官方上线了 7.X 新版,下面的序列号仅适合 6.X 及之前的版本,如果没有合适的License请勿使用最新版

# 从官方下载安装包到/tmp目录
wget -P /tmp https://downloads.realvnc.com/download/file/vnc.files/VNC-Server-6.11.0-Linux-x64.rpm

# 安装
yum install -y /tmp/VNC-Server-6.11.0-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连接时不需要输入端口号(默认使用5900)

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

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

备注:
1、RealVNC通过系统用户名及密码进行验证,无需使用vncpasswd程序单独为用户创建密码
2、在Ubuntu系统创建用户时,需要添加-m参数设置用户目录,目录不存在会导致VNC运行出错

八、验证连接

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

九、集中管控

9-1:启用policy功能实现对所有VNC用户统一管控

# 创建policy.d目录
mkdir /etc/vnc/policy.d

# 创建restrictions文件
echo 'BlockNonPolicyServers=0' > /etc/vnc/policy.d/restrictions

# 创建配置文件
touch /etc/vnc/policy.d/vncserver-x11-virtual

9-2:设置策略   官方网站:参数说明

编辑配置文件 vi /etc/vnc/policy.d/vncserver-x11-virtual 选择性将以下参数添加进去


# 指定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官网)
EnableAnalytics=0

十、日常维护

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 -t ~/.vnc/命令,会以创建时间的先后顺序显示如下文件:
 
-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
drwx------ 2 vnc vnc    58 4月  15 13:54 config.d
-rw------- 1 vnc vnc 18952 4月  15 13:54 localhost.localdomain:3.log
-rw------- 1 vnc vnc 53140 4月  15 13:20 localhost.localdomain:1.log
-rw------- 1 vnc vnc    50 4月  15 12:00 vncchat.xml
-rw------- 1 vnc vnc  2824 4月  15 11:45 private.key

# 根据时间信息找到最新创建的pid文件:localhost.localdomain:2.pid,其中的2就是虚拟桌面号

# 执行命令将其结束:vncserver -kill :2

10-3:如果服务器不连外网离线使用,需要将主机名与IP地址127.0.0.1的对应关系写入到hosts文件,否则会导致VNC Viewer连接服务器时延长30秒左右,或是连接报错

echo "127.0.0.1 $HOSTNAME" >> /etc/hosts

10-4:如果在Ubuntu服务器搭建RealVNC,则需要禁用休眠功能、并卸载针对xfce桌面的锁屏功能,否则VNC桌面会卡死无法操作

# Ubuntu系统禁用休眠
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

# 卸载xfce桌面的锁屏功能
apt purge xfce4-screensaver

10-5:如果在安装RealVNC后部署了NIS认证系统,RealVNC可能会出现登录失败/找不到用户等问题,可NIS的功能正常,此时需要重启下服务器(猜测是RealVNC的Bug)

10-6:升级VNC服务器

按本文第3步下载并安装最新版VNC Server(无需重复导入授权Key),客户通过VNC Viewer断开与服务器的连接,再重新登录后即可使用新安装的VNC Server

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值