Unix Like

[Updated] libvirt & qemu change VNC password without restart

文章【libvirt & qemu无需重启(在线)更改VNC密码】已于2019-02-17更新。


有两个方法,一个是通过libvirt的virDomainUpdateDeviceFlags接口,另一个是通过qemu-monitor。

以下把“DOMAIN_NAME”替换为虚拟机的名称,“YOU_NEW_VNC_PASSWORD”替换为你的新密码。

通过virDomainUpdateDeviceFlags接口

使用libvirt管理虚拟机的情况下,这个方法是首选,libvirt官方是不推荐使用了libvirt的情况下操纵qemu-monitor的。

首先编写VNC graphic的XML配置:

<graphics type="vnc" passwd="YOU_NEW_VNC_PASSWORD" port="-1" autoport="yes" websocket="-1">
  <listen type="address" address="0.0.0.0"/>
</graphics>

注意,使用了current及live标记的情况下,是不能更改监听地址与监听端口的,所以需要运行时修改密码请注意port与address与现配置一致。

virDomainUpdateDeviceFlags函数原型见此:https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUpdateDeviceFlags

这是PHP调用的例子:

// $VNCGraphicXML = ...
$domain->libvirt_domain_update_device($domainResource, $VNCGraphicXML, VIR_DOMAIN_DEVICE_MODIFY_LIVE | VIR_DOMAIN_DEVICE_MODIFY_CONFIG);

 

使用virsh控制台的,可以通过update-device命令,把前面编写的XML内容保存为文件,例如domain-vnc-graphic.xml:

virsh update-device DOMAIN_NAME domain-vnc-graphic.xml --config --live

 

通过qemu-monitor

virsh qemu-monitor-command DOMAIN_NAME --hmp set_password vnc YOU_NEW_VNC_PASSWORD

 

105 Posts

自信、努力、活出精彩;以前未所见的颜色,绘大千世界!
View all posts

Leave a reply

Your email address will not be published. Required fields are marked *