Linux笔记之VNC配置

又要当苦力了,自beipo学习VNC多用户的配置。成就·学习运维技能之VNC配置,get!

和XDMCP相同,环境为CentOS 7.8,且已安装GNOME桌面环境。

友情提醒:配置生产用的服务器是务必小心,不熟悉、不自信的同学可以先用虚拟机练练手。

1 预备知识

下面先简单讲一下VNC是个啥。还是要先装模作样一番的

VNC可以简单理解为桌面级的图像分享系统,可以通过它实现远程控制。就这么简单,更难的我也不会

wikipedia上有详细介绍VNC的词条,可以过去看看。

另外,VNC本质上是不需要桌面环境的,即使是CentOS最小安装也是可以使用VNC的;但是呢,这一套就比较麻烦了,所以,懂的都懂,毕竟打工人的干活方式就是能用就行嘛。

2 安装VNC

2.1 安装桌面环境

首先检查系统内是否有图形界面,我就以GNOME为例,KDE也是类似的。

1
2
# 检查group列表,看看是否有GNOME Desktop
yum grouplist
yum grouplist结果

如果在已安装中有GNOME Desktop,那么就可以跳过桌面环境的安装了。

1
2
# 安装GNOME Desktop环境
sudo yum groupinstall -y "GNOME Desktop"

如果需要调整默认显示模式(命令行/图形桌面),可以使用下面的指令。

1
2
3
4
# 切换为图形桌面
sudo systemctl set-default graphical.target
# 切换为命令行
sudo systemctl set-default multi-user.target

2.2 安装VNC组件

VNC组件安装前,可以确认一下使用的镜像源,如果是国外源,可以尝试切换为清华源,切换步骤查看TUNA的CentOS镜像使用帮助

1
2
3
4
# 安装VNC组件
yum install tigervnc-server -y
# 验证VNC安装
rpm -qa|grep tigervnc-server
验证VNC安装

3 配置VNC

VNC安装结束后,需要为每个需要使用的用户配置VNC,本文就简单为2个用户配置一下。其中,leon用户使用的桌面号为1root用户使用的桌面号为2注:实际配置过程中,请务必把老板的账号配置为1,以表示尊重

第一步需要依据VNC自带的脚本sample来创建2个VNC启动脚本。

1
2
3
# 从sample创建VNC启动脚本
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service

命令中的12是桌面号,访问VNC时,桌面号不同的脚本对应的端口号不同。VNC访问桌面号1时,使用5900+1=5901端口;问桌面号2时,使用5900+2=5902端口;以此类推。但请不乱推

接着,需要小小处理一下刚刚复制的脚本。

1
2
3
4
cd /etc/systemd/system
# 给权限x
sudo chmod +x vncserver@\:1.service
sudo chmod +x vncserver@\:2.service

接着打开2个脚本。

1
2
# 打开脚本
sudo vim vncserver@\:1.service

<USER>改为用户名,此处为桌面号1的脚本vncserver@\:1.service,改为普通用户leon

脚本修改前
脚本修改后

相同的操作步骤,将vncserver@\:2.service中的<USER>改为root

改完之后,还需要设置一下VNC的连接密码。配置此密码需要在相应的用户下进行,可以使用su(仅能切换到root)或su xxx来进行用户切换。

1
2
# 配置VNC连接密码
vncpasswd

VNC密码配置过程中,首先是主密码的设置;接着是一个进入只读模式的辅助密码,可根据自身需求选择是否进行设置。

4 启动VNC服务及端口开放

下面是VNC服务的启动和开机自启的配置。

1
2
3
4
5
6
7
8
# 重载配置文件
sudo systemctl daemon-reload
# 启动VNC脚本服务
sudo systemctl start vncserver@\:1.service
sudo systemctl start vncserver@\:2.service
# 配置开机自启
sudo systemctl enable vncserver@\:1.service
sudo systemctl enable vncserver@\:2.service

检查端口监听情况。注:如果这里看不到端口59015902,可以尝试重启,具体原因未知

1
2
# 检查端口监听
netstat -lnpt|grep Xvnc
端口监听状态

防火墙开放端口59015902。如果比较大胆的,可以直接把防火墙给关了。

1
2
3
# 防火墙开放端口
firewall-cmd --zone=public --add-port=5901/tcp --permanent
firewall-cmd --zone=public --add-port=5902/tcp --permanent

关闭SELinux我也不知道这个具体怎么使用,只清楚开着没办法连接¯\_( ツ )_/¯

1
2
# 打开SELinux配置文件
vim /etc/selinux/config

将横线处改为disabled即可。改为permissive可以连接VNC,但是会报错,且可以屏蔽,自行选择。

端口监听状态

5 连接VNC

连接桌面号为1,可以使用ip:1或者ip:5901来连接;桌面号为2使用ip:2或者ip:5902

连接VNC地址配置
连接VNC演示

总结

VNC配置到此结束,希望有需求的各位同学能有点收获吧。

最后的最后,日常求一键三连收藏分享。