Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC)
上篇:宿主机 TigerVNC 远程桌面配置(管理宿主机)
一、安装 TigerVNC 服务
- 检查可用包并安装
yum list available tigervnc-server yum install -y tigervnc-server tigervnc-server-minimal
- 验证安装结果
rpm -qa | grep tigervnc-server
二、解决 GPG 密钥安装错误
若安装时提示 “GPG 密钥验证失败”,执行:
# 手动导入 Rocky Linux 官方 GPG 密钥
rpm --import https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-8# 若密钥导入失败,临时跳过 GPG 检查(应急用,不推荐长期使用)
yum install -y --nogpgcheck tigervnc-server
三、配置宿主机 VNC 服务
- 为宿主机用户设置 VNC 密码(以 root 为例)
vncpasswd # 输入密码(无明文显示),确认密码;可选“仅查看密码”(输入 n 跳过)
- 创建 VNC 服务配置文件
cat > /etc/systemd/system/vncserver@:0.service << EOF [Unit] Description=宿主机 VNC 远程桌面服务 After=syslog.target network.target[Service] Type=forking User=root # 若用普通用户,替换为实际用户名(如 user1) PIDFile=/root/.vnc/%H%i.pid # 普通用户路径:/home/用户名/.vnc/%H%i.pid ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver %i -geometry 1280x720 # 分辨率可按需调整 ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install] WantedBy=multi-user.target EOF
- 加载配置并启动服务
systemctl daemon-reload systemctl start vncserver@:0.service # :0 对应端口 5900 systemctl enable vncserver@:0.service # 开机自启
- 验证宿主机 VNC 服务状态
systemctl status vncserver@:0.service -l ss -tuln | grep 5900 # 确认 5900 端口监听
四、宿主机防火墙配置
# 开放宿主机 VNC 端口(5900)
firewall-cmd --add-port=5900/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports # 验证端口已开放
下篇:KVM 虚拟机创建与 VNC 远程配置(管理虚拟机)
若需在宿主机上创建 KVM 虚拟机,并通过 VNC 连接虚拟机(而非宿主机),则需要以下步骤:
一、安装并启动 KVM 相关服务
- 安装 KVM 虚拟化组件
yum install -y qemu-kvm libvirt virt-install bridge-utils
- 启动并设置
libvirtd
服务开机自启(你提到的关键步骤)systemctl start libvirtd # 启动 KVM 管理服务 systemctl enable libvirtd # 开机自启 systemctl status libvirtd # 验证服务状态(需显示 active (running))
二、创建 KVM 虚拟机(带 VNC 远程功能)
使用 virt-install
命令创建虚拟机,并指定 VNC 远程参数(你提供的命令优化后):
virt-install \
--virt-type kvm \ # 虚拟化类型为 KVM
--os-type=linux \ # 操作系统类型
--os-variant rhel7 \ # 系统版本(如 CentOS 7 对应 rhel7)
--name centos7 \ # 虚拟机名称(自定义)
--memory 1024 \ # 虚拟机内存(1024MB,按需调整)
--vcpus 1 \ # 虚拟机 CPU 核心数(按需调整)
--disk path=/opt/centos2.raw,format=raw,size=10 \ # 磁盘路径、格式、大小(10GB)
--cdrom /opt/CentOS-7-x86_64-Minimal-2009.iso \ # 镜像文件路径(需确保路径正确)
--network=default \ # 网络模式(默认 NAT,也可配置桥接)
--graphics vnc,listen=0.0.0.0 \ # 启用 VNC 远程,监听所有网卡(方便外部连接)
--noautoconsole \ # 不自动打开虚拟机控制台
三、查看虚拟机 VNC 端口(关键:确定虚拟机的 VNC 端口)
KVM 会为每个虚拟机分配独立的 VNC 端口(默认从 5901 开始,避免与宿主机 5900 冲突):
virsh vncdisplay centos7 # 查看名为“centos7”的虚拟机 VNC 端口
- 示例输出:
:1
→ 对应端口 5901;若输出:2
→ 对应端口 5902,以此类推。
四、虚拟机 VNC 防火墙配置
# 开放虚拟机 VNC 端口(以 5901 为例,需与实际端口匹配)
firewall-cmd --add-port=5901/tcp --permanent
firewall-cmd --reload
五、VNC 客户端连接虚拟机
- 打开 VNC Viewer(与连接宿主机相同的客户端);
- 输入连接地址:
宿主机IP:虚拟机VNC端口
(如192.168.32.128:5901
); - 直接进入虚拟机安装界面(首次启动需安装系统),后续可远程管理虚拟机。
关键区别与适用场景
配置对象 | 核心服务 | VNC 端口 | 用途 |
---|---|---|---|
宿主机 | vncserver | 5900(:0) | 远程管理宿主机桌面 |
KVM 虚拟机 | libvirtd | 5901+(:1+) | 远程安装 / 管理虚拟机 |
常见问题排查
虚拟机 VNC 连接超时:
- 确认
virsh vncdisplay 虚拟机名
得到的端口正确; - 检查宿主机防火墙是否开放了该端口;
- 验证宿主机 IP 可 ping 通(客户端执行
ping 宿主机IP
)。
- 确认
virt-install
提示 “镜像文件不存在”:- 检查
--cdrom
后的镜像路径是否正确(如/opt/CentOS-7.iso
是否存在); - 若路径错误,修改为实际镜像路径(可通过
ls /opt/
查看文件)。
- 检查
宿主机 VNC 启动失败(提示 “X Server 已运行”):
# 停止宿主机图形服务(避免冲突) systemctl stop gdm && systemctl disable gdm # 清理残留锁文件 rm -rf /tmp/.X0-lock /tmp/.X11-unix/X0 # 重新启动宿主机 VNC systemctl restart vncserver@:0.service