一、安装CentOS
1.U盘安装的iso文件下载地址,阿里云镜像:https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso?spm=a2c6h.25603864.0.0.1c5f53baLjCRy0 2.安装选项界面,软件选择,使用默认选择:“带GUI的服务器”。
二、安装vncserver
为方便安装,直接以root账号登录系统。
以下主要内容转自 。
1. 更新源
在 CentOS 8 中使用 yum 命令安装软件时会出现 “错误:为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist“,如下图所示:
出现这个错误提示的原因是在2022年1月31日,CentOS 团队从官方镜像中移除 CentOS 8 的所有包。因为 CentOS 8 已于2021年12月31日停止官方服务了,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到 https://vault.centos.org。如果你仍然需要运行 CentOS 8,你可以在 /etc/yum.repos.d 中更新一下源。使用 http://vault.centos.org 代替 http://mirror.centos.org 即可。
打开终端,输入 su 命令切换 root 用户登录,然后使用下面的命令更新源:
sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
2.安装"Server with GUI",开启vnc服务必须让服务器有图形界面的支持。
虽然安装centos时默认是“带GUI的服务器”,启动后也有图形界面,但仍然需要执行下面这一步。并且必须先执行这一步
[root@test18 ~]# yum groupinstall "Server with GUI"
3. 配置环境变量DISPLAY,本例选择屏幕号:1,并使其生效
经测试,不执行这一步可以。
[root@test18 ~]# vim .bashrc
export DISPLAY=:1
[root@test18 ~]# source .bashrc
4.安装vncserver
[root@test18 ~]# yum install tigervnc-server tigervnc
5.配置vncserver的用户及其使用的屏幕号
编辑/etc/tigervnc/vncserver.users,本例使用root访问(根据实际情况使用账户,用root并不是个好的选择),屏幕号与之前保持一致:1
[root@test18 ~]# vim /etc/tigervnc/vncserver.users
:1=root
6.配置vncserver默认选项
编辑/etc/tigervnc/vncserver-config-defaults。
注意session选项,应该匹配/usr/share/xsessions/目录下的内容,比如有/usr/share/xsessions/gnome.desktop文件,那么才能写session=gnome。详情可以man 8 vncsession查看手册。
[root@test18 ~]# ls /usr/share/xsessions/
com.redhat.Kiosk.desktop gnome-custom-session.desktop gnome-xorg.desktop xinit-compat.desktop
gnome-classic.desktop gnome.desktop openbox.desktop
[root@test18 ~]# vim /etc/tigervnc/vncserver-config-defaults
session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=1366x768
alwaysshared
7.配置vnc密码
[root@test18 ~]# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
8.systemd单元复制
在root home目录创建相应目录.config/systemd/user/,把vncserver的systemd单元复制过来。注意命名和之前使用的屏幕号一致:1
[root@test18 ~]# mkdir -p .config/systemd/user/
[root@test18 ~]# cp /lib/systemd/system/vncserver@.service .config/systemd/user/vncserver@:1.service
9.加载新的systemd单元
注意–user选项,应该能看到Loaded是我们配置的vncserver的systemd单元
[root@test18 ~]# systemctl --user daemon-reload
[root@test18 ~]# systemctl --user status -l vncserver@\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/root/.config/systemd/user/vncserver@:1.service; disabled; vendor preset: enabled)
Active: inactive (dead)
10.启动vncserver服务
注意–user选项,如果看到Active,说明服务启动。如果看到类似如下报错,那么参看下一步可选项,配置selinux上下文。
[root@test18 ~]# systemctl --user start vncserver@\:1.service
[root@test18 ~]# systemctl --user status -l vncserver@\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/root/.config/systemd/user/vncserver@:1.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Mar 14 12:15:48 test18.abcd.com vncsession[1846]: vncsession: vncserver exited with status=71
Mar 14 12:15:48 test18.abcd.com vncsession[1846]: pam_unix(tigervnc:session): session closed for user root
Mar 14 12:15:48 test18.abcd.com systemd[1769]: vncserver@:1.service: Succeeded.
Mar 14 12:16:23 test18.abcd.com systemd[1769]: Starting Remote desktop service (VNC)...
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: pam_systemd(tigervnc:session): Cannot create session: Already running in a session or user slice
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: pam_unix(tigervnc:session): session opened for user root by (uid=0)
Mar 14 12:16:23 test18.abcd.com systemd[1769]: Started Remote desktop service (VNC).
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: vncsession: vncserver exited with status=71
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: pam_unix(tigervnc:session): session closed for user root
Mar 14 12:16:23 test18.abcd.com systemd[1769]: vncserver@:1.service: Succeeded.
我在启动时遇到桌面崩溃的问题,崩溃界面如下,点击注销,继续完成防火墙和开机自启的配置后,重启服务器即可远程正常登录。崩溃的具体原因不清楚,估计是配置完成后只能通过远程方式登录,本机无法登录了。注意:在重启之前,建议完成防火墙和开机自启的配置,否则重启后无法进入桌面。
11.可选步骤,配置selinux。
办法一、禁用selinux,禁用后重启一下服务器即可。
办法二、配置.vnc目录的selinux上下文。先查询一下,发现家目录下.vnc需要xdm_home_t 。使用semanage fcontext -a -t xdm_home_t "/root/.vnc(/.*)?"加上这个上下文。使用restorecon -Rv .vnc/使其生效。再启动vnc服务就Active了!
[root@test18 ~]# semanage fcontext -l | grep vnc
.vnc(/.*)? all files system_u:object_r:xdm_home_t:s0
/home/[^/]+/\.vnc(/.*)? all files unconfined_u:object_r:xdm_home_t:s0
/home/\.vnc(/.*)? all files system_u:object_r:xdm_home_t:s0
/usr/bin/Xvnc regular file system_u:object_r:xserver_exec_t:s0
/usr/bin/nova-novncproxy regular file system_u:object_r:nova_exec_t:s0
/usr/bin/nova-vncproxy regular file system_u:object_r:nova_exec_t:s0
/usr/bin/nova-xvpvncproxy regular file system_u:object_r:nova_exec_t:s0
/usr/bin/x11vnc regular file system_u:object_r:xserver_exec_t:s0
/usr/libexec/vncsession-start regular file system_u:object_r:vnc_session_exec_t:s0
/usr/sbin/vncsession regular file system_u:object_r:vnc_session_exec_t:s0
/var/run/vncsession-:[0-9]*\.pid regular file system_u:object_r:vnc_session_var_run_t:s0
[root@test18 ~]# semanage fcontext -a -t xdm_home_t "/root/.vnc(/.*)?"
[root@test18 ~]# restorecon -Rv .vnc/
Relabeled /root/.vnc from system_u:object_r:admin_home_t:s0 to system_u:object_r:xdm_home_t:s0
Relabeled /root/.vnc/passwd from system_u:object_r:admin_home_t:s0 to system_u:object_r:xdm_home_t:s0
Relabeled /root/.vnc/test18.abcd.com:1.log from system_u:object_r:admin_home_t:s0 to system_u:object_r:xdm_home_t:s0
[root@test18 ~]# systemctl --user start vncserver@\:1.service
[root@test18 ~]# systemctl --user status -l vncserver@\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/root/.config/systemd/user/vncserver@:1.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-03-14 20:48:25 CST; 1s ago
12.配置防火墙vncserver服务入栈规则,一定要reload生效,查看允许的服务有vnc-server
[root@test18 ~]# firewall-cmd --permanent --add-service=vnc-server
[root@test18 ~]# firewall-cmd --reload
[root@test18 ~]# firewall-cmd --list-all
13.启动服务,设置开机自启
[root@test1 ~]# sudo systemctl enable --now vncserver@\:1.service
三、安装UltraVNC Viewer
下载地址: https://www.uvnc.com/downloads/ultravnc.html
输入主机名称:序号,密码,连接进入桌面
参考文档
- 在 CentOS 8 中安装软件出现 “错误:为仓库 ‘appstream’ 下载元数据失败” 的解决办法。
- 配置VNC
- 修改.bashrc文件导致的登录root闪退问题。