【问题现象】
OpenStack Kiko版本对接华为FusionCompute,通过界面创建的虚拟机使用控制台打开,提示Authentication fail
【问题分析】
从提示的信息看,vnc在握手成功后,验证密码时失败,通过浏览器的F12工具可以确认这点。
查看虚拟机所在的CNA节点,分析虚拟机日志
/var/log/xen/qemu-dm-i-00000093.log
[2013-07-13 12:09:04] New client on socket 28
[2013-07-13 12:09:04] vnc_set_share_mode/28: undefined -> connecting
[2013-07-13 12:09:04] Set the controller(type:1) of qemu_timer_mode 2........
[2013-07-13 12:09:04] the controller(type:1) frame freq is 200........
[2013-07-13 12:09:04] Client request protocol version 3.8
[2013-07-13 12:09:04] Telling client we support auth 2
[2013-07-13 12:09:04] Client requested auth 2
[2013-07-13 12:09:04] Start VNC auth
[2013-07-13 12:09:04] Client challenge response did not match
[2013-07-13 12:09:04] Closing down client sock: protocol error
[2013-07-13 12:09:04] vnc_set_share_mode/28: connecting -> disconnected
[2013-07-13 12:09:04] Unset the controller(type:1) of qemu_timer_mode 2........
也可以看到在启动验证后提示不匹配。
但是通过FusionCompute Portal的vnc控制台可以访问虚拟机。查询虚拟机的信息可以发现虚拟机设置了vncPassword,所以导致无法访问虚拟机。
分析vnc的源码可以发现,原生的vnc密码加密采用的DES,而FC的vnc加密算法使用的是sha256.
【解决方法】
使用sha256加密虚拟机的vnc密码即可访问虚拟机