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
相关推荐
云枫晖6 分钟前
Webpack系列-Entry入口
前端·webpack
mustfeng11 分钟前
VCS & Verdi 2023安装
java·服务器·前端
Mintopia31 分钟前
🌐 数据合规框架下的 WebAIGC 训练数据处理技术规范
前端·javascript·aigc
骥龙1 小时前
2.6、Web漏洞挖掘实战(下):XSS、文件上传与逻辑漏洞深度解析
前端·xss
用户433845375691 小时前
Promise深度解析,以及简易版的手写实现
前端
梦之云1 小时前
state 状态相关
前端
梦之云1 小时前
effect 副作用相关
前端
golang学习记1 小时前
从0死磕全栈之Next.js 生产环境优化最佳实践
前端
Mintopia2 小时前
🧠 Next.js 还是 Nuxt.js?——当 JavaScript 碰上命运的分叉路
前端·后端·全栈
5pace2 小时前
Mac Nginx安装、启动、简单命令(苍穹外卖、黑马点评前端环境搭建)
java·前端·nginx·macos·tomcat