Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC)

上篇:宿主机 TigerVNC 远程桌面配置(管理宿主机)

一、安装 TigerVNC 服务

  1. 检查可用包并安装

    复制代码
    yum list available tigervnc-server
    yum install -y tigervnc-server tigervnc-server-minimal
  2. 验证安装结果

    复制代码
    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 服务

  1. 为宿主机用户设置 VNC 密码(以 root 为例)

    复制代码
    vncpasswd
    # 输入密码(无明文显示),确认密码;可选"仅查看密码"(输入 n 跳过)
  2. 创建 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
  3. 加载配置并启动服务

    复制代码
    systemctl daemon-reload
    systemctl start vncserver@:0.service  # :0 对应端口 5900
    systemctl enable vncserver@:0.service  # 开机自启
  4. 验证宿主机 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 相关服务

  1. 安装 KVM 虚拟化组件

    复制代码
    yum install -y qemu-kvm libvirt virt-install bridge-utils
  2. 启动并设置 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 客户端连接虚拟机

  1. 打开 VNC Viewer(与连接宿主机相同的客户端);
  2. 输入连接地址:宿主机IP:虚拟机VNC端口(如 192.168.32.128:5901);
  3. 直接进入虚拟机安装界面(首次启动需安装系统),后续可远程管理虚拟机。

关键区别与适用场景

配置对象 核心服务 VNC 端口 用途
宿主机 vncserver 5900(:0) 远程管理宿主机桌面
KVM 虚拟机 libvirtd 5901+(:1+) 远程安装 / 管理虚拟机

常见问题排查

  1. 虚拟机 VNC 连接超时

    • 确认 virsh vncdisplay 虚拟机名 得到的端口正确;
    • 检查宿主机防火墙是否开放了该端口;
    • 验证宿主机 IP 可 ping 通(客户端执行 ping 宿主机IP)。
  2. virt-install 提示 "镜像文件不存在"

    • 检查 --cdrom 后的镜像路径是否正确(如 /opt/CentOS-7.iso 是否存在);
    • 若路径错误,修改为实际镜像路径(可通过 ls /opt/ 查看文件)。
  3. 宿主机 VNC 启动失败(提示 "X Server 已运行")

    复制代码
    # 停止宿主机图形服务(避免冲突)
    systemctl stop gdm && systemctl disable gdm
    # 清理残留锁文件
    rm -rf /tmp/.X0-lock /tmp/.X11-unix/X0
    # 重新启动宿主机 VNC
    systemctl restart vncserver@:0.service
相关推荐
brzhang3 小时前
AI Agent 干不好活,不是它笨,告诉你一个残忍的现实,是你给他的工具太难用了
前端·后端·架构
brzhang3 小时前
一文说明白为什么现在 AI Agent 都把重点放在上下文工程(context engineering)上?
前端·后端·架构
reembarkation3 小时前
自定义分页控件,只显示当前页码的前后N页
开发语言·前端·javascript
gerrgwg3 小时前
React Hooks入门
前端·javascript·react.js
ObjectX前端实验室3 小时前
【react18原理探究实践】调度机制之注册任务
前端·react.js
汉字萌萌哒4 小时前
【 HTML基础知识】
前端·javascript·windows
ObjectX前端实验室4 小时前
【React 原理探究实践】root.render 干了啥?——深入 render 函数
前端·react.js
北城以北88886 小时前
Vue--Vue基础(二)
前端·javascript·vue.js
ObjectX前端实验室6 小时前
【react18原理探究实践】更新调度的完整流程
前端·react.js