在使用 Rocky Linux 8 作为服务器时,远程管理是绕不开的需求。尤其是涉及到 KVM 虚拟化时,我们需要同时管理宿主机和虚拟机。通常,我们会选择 VNC 作为远程桌面解决方案。但配置不当,会遇到连接不稳定、性能差等问题。本文将深入探讨 Rocky Linux 8 宿主机 VNC 和 KVM 虚拟机 VNC 的配置,助你打造高效稳定的远程管理环境。
宿主机 VNC 配置
安装 TigerVNC server
首先,安装 TigerVNC server,它是 VNC 协议的一个开源实现,性能较好。
dnf install tigervnc-server tigervnc-server-module -y
配置 VNC 密码
设置 VNC 连接密码,这是保证安全性的第一步。
vncpasswd
创建 VNC 配置文件
为每个用户创建一个 VNC 配置文件。例如,为用户 admin 创建 /home/admin/.vnc/xstartup 文件。注意赋予执行权限。
cat > /home/admin/.vnc/xstartup << EOF
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
# 使用 Gnome 桌面环境
export XKL_XMODMAP_DISABLE=1
gnome-session &
EOF
chmod +x /home/admin/.vnc/xstartup
chown admin:admin /home/admin/.vnc/xstartup
这里使用了 gnome-session,如果想使用其他的桌面环境,例如 Xfce,可以安装 xfce4 并将 gnome-session & 替换为 startxfce4 &。
配置 systemd 服务
创建 systemd 服务文件,方便管理 VNC 服务。创建一个名为 /etc/systemd/system/vncserver@:1.service 的文件,内容如下:
[Unit]
Description=Remote desktop (VNC) service
After=syslog.target network.target
[Service]
Type=forking
User=admin # 替换为你的用户名
Group=admin # 替换为你的用户组
ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -geometry 1920x1080 :1 # 分辨率可自定义
ExecStop=/usr/bin/vncserver -kill :1 > /dev/null 2>&1
[Install]
WantedBy=multi-user.target
注意替换 User 和 Group 为你的用户名和用户组。:1 表示 VNC 服务的端口为 5901。
启动 VNC 服务
启用并启动 VNC 服务。
systemctl enable vncserver@:1.service
systemctl start vncserver@:1.service
防火墙配置
确保防火墙允许 VNC 端口通过。默认情况下,VNC 使用 5900 + display number 的端口。例如,display number 为 1,则端口为 5901。
firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --reload
避坑经验:SELinux
如果遇到 VNC 无法正常启动,或者桌面环境无法加载,可能是 SELinux 阻止了相关操作。可以尝试临时禁用 SELinux 排查问题,或者配置 SELinux 策略允许 VNC 访问。
setenforce 0 # 临时禁用 SELinux
# 或者,配置 SELinux 策略
KVM 虚拟机 VNC 配置
确认虚拟机已安装图形界面
确保 KVM 虚拟机已经安装了图形界面环境,例如 Gnome 或 Xfce。如果没有,需要先安装。
配置 KVM 虚拟机 VNC 连接
使用 virsh edit vm_name 命令编辑虚拟机的 XML 配置文件。找到 <graphics> 标签,确保 VNC 已经启用。
<graphics type='vnc' port='5902' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
port 属性指定了 VNC 连接的端口。listen 属性指定了监听地址。设置为 0.0.0.0 表示监听所有地址,允许从任何 IP 地址连接。autoport='no' 表示不自动分配端口,使用指定的端口。将上述配置加入到虚拟机配置文件后,重启虚拟机。
防火墙配置
同样需要确保防火墙允许虚拟机 VNC 端口通过。
firewall-cmd --permanent --add-port=5902/tcp
firewall-cmd --reload
使用 SSH 隧道连接
为了安全起见,建议使用 SSH 隧道连接 KVM 虚拟机 VNC。这样可以加密 VNC 连接,防止数据泄露。
ssh -L 5902:localhost:5902 user@server_ip
然后在本地使用 VNC 客户端连接 localhost:5902。
远程连接与管理
配置完成后,可以使用 VNC 客户端连接到宿主机和 KVM 虚拟机。例如,使用 TigerVNC viewer 或 Remmina。
连接宿主机 VNC:server_ip:5901
连接 KVM 虚拟机 VNC:server_ip:5902 (或者通过 SSH 隧道连接 localhost:5902)
结合宝塔面板等工具,可以更方便地进行服务器和虚拟机的管理。宝塔面板提供了图形化的界面,可以轻松管理网站、数据库、SSL 证书等。
总结
本文详细介绍了 Rocky Linux 8 宿主机 VNC 和 KVM 虚拟机 VNC 的配置过程,并分享了一些避坑经验。通过合理的配置和安全措施,可以实现高效稳定的远程管理。
冠军资讯
加班到秃头