使用noVNC连接虚拟机控制台

最近在做一个KVM的虚拟机管理网站,需要在网页中显示虚拟机控制台。自然选到了noVNC。

简单使用:

命令行执行:
./utils/launch.sh --vnc 127.0.0.1:5900

在浏览器中访问:
http://192.168.0.200:6080/vnc.html?host=192.168.0.200&port=6080
可以进入对应的虚拟机控制台:
使用noVNC连接虚拟机控制台_第1张图片

如果需要加密链接,可以先在Linux系统中生成key文件:
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
然后执行:
./utils/launch.sh --cert self.pem --vnc 127.0.0.1:5900
在浏览器中访问:
使用noVNC连接虚拟机控制台_第2张图片

进阶用法:
执行命令:
./utils/websockify.py --web ./ 8844 --target-config=/root/noVNC/test.conf
将代理的端口设置为8844,链接信息文件test.conf的内容如下:
abc123: 127.0.0.1:5900
其中'abc123'为token值,127.0.0.1:5900是虚拟机的vnc地址

在浏览器中访问:
http://192.168.0.200:8844/vnc_auto.html?path=%3ftoken=abc123
可以自动连接到对应虚拟机的控制台。
这里要特别注意一下,在url中%3f是'?'的url编码,我们不能直接使用path=?token=abc123这种格式。

多物理机时怎么办?
qemu中的vnc默认监听127.0.0.1这个网络接口。在多物理机的情况下要显示各个虚拟机的控制台,可以指定qemu中的虚拟机监听物理机的ip,然后通过上面的方式,可以达到只开放一个外网端口即可显示所有物理机中虚拟机控制台的效果。

你可能感兴趣的:(qemu,novnc)