ssh root@<宿主机管理IP>
virsh list --all # 记录虚拟机名称 (e.g., vm-ubuntu-prod)
⚠️ 关键操作:修改 XML 配置前必须先关闭虚拟机!
关闭目标虚拟机
virsh shutdown <虚拟机名称> --mode=acpi # 尝试正常关机
# 若无法关闭,强制终止:
virsh destroy <虚拟机名称> # 强制断电
导出当前 XML 配置(安全备份)
virsh dumpxml <虚拟机名称> > /tmp/<虚拟机名称>_backup.xml
编辑虚拟机 XML 配置
virsh edit <虚拟机名称>
定位并修改 VNC 端口参数
在 <graphics>
标签中修改 port
属性(原值通常为 -1
或 5900+
):
<graphics type='vnc' port='5999' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
参数说明:
port='5999'
:自定义端口 (e.g., 5999)autoport='no'
:必须设为 no
禁用自动分配listen='0.0.0.0'
:监听所有 IP(安全场景可指定管理 IP)address='0.0.0.0'
:同上(匹配 listen)保存并退出编辑器
(编辑器通常是 vim
,按 Esc
→ :wq
保存退出)
virsh start <虚拟机名称>
virsh vncdisplay <虚拟机名称> # 输出应为 :<端口后两位> (e.g., :99 表示 5999)
netstat -tunlp | grep 5999 # 确认端口监听中
# 临时放行(重启失效)
iptables -I INPUT -p tcp --dport 5999 -j ACCEPT
# 永久放行(根据系统选其一)
firewall-cmd --permanent --add-port=5999/tcp # CentOS/RHEL
firewall-cmd --reload
# 或编辑 /etc/sysconfig/iptables 添加规则后重启服务
修改 Libvirt 全局配置 /etc/libvirt/libvirtd.conf
:
vnc_listen = "0.0.0.0" # 监听地址
vnc_auto_unix_socket = 0 # 禁用 Unix Socket
vnc_tls = 0 # 禁用 TLS
vnc_port_min = 6000 # 最小端口
vnc_port_max = 6100 # 最大端口
重启服务生效:
systemctl restart libvirtd
查找占用端口的进程:
lsof -i :5999 # 检查端口占用
kill -9 <PID> # 强制终止进程(谨慎操作)
shut off
状态),运行中编辑会导致配置回滚。80
、443
、22
等常用端口,建议范围 5901-5999
或 60000+
。0.0.0.0
有风险,应在防火墙限制访问 IP(例如仅允许运维网段)。libvirtd
服务仅影响新创建的虚拟机。virsh dumpxml > backup.xml
)。浏览器访问:https://<UIS_IP>:端口(需开放HTTPS)
VNC Viewer
连接:<宿主机管理IP>:5999
通过以上步骤可精准控制 VNC 端口分配,适用于端口隔离、安全合规或冲突规避等场景。遇到异常时,可快速回滚备份的 XML 文件恢复配置:
virsh define /tmp/<虚拟机名称>_backup.xml
(0)
多谢
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
多谢