NoVNC 正是我们需要的 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC. 前面说了 noVNC 采用 WebSockets 实现,但是目前大多数 VNC 服务器都不支持 WebSockets,所以 noVNC 是不能直接连接 VNC 服务器的,怎么办呢?需要一个代理来做 WebSockets 和 TCP sockets 之间的转换,理解这一点很重要。这个代理也已经有了,在 noVNC 的目录里,叫做 websockify.
理一下思绪:
Ubuntu环境。现在我们要通过浏览器呈现出虚拟机(noNVC),那么我们需要创建出虚拟机(KVM),接着进行远程连接。VNC是在虚拟主机上配置服务器,通过主机的IP地址与端口进行访问,进而访问虚拟机的一种访问方式 ,其实就是每个虚拟机对应着一个套接字。然后通过websockify.py 连接配置文件(token)。登陆主机的ip地址,端口6080,在vnc_auto.html显示虚拟机。
noVNC的配置
$ git clone https://github.com/kanaka/noVNC
$ cd noVNC
$/utils/websockify/websockify.py 8000 localhost:5900.或 /utils/websockify/websockify.py --web=. 6080 --target-config=vnc_tokens
WARNING: no 'numpy' module, HyBi protocol is slower or disabled
WebSocket server settings:
- Listen on :8000
- Flash security policy server
- No SSL/TLS support (no cert file)
- proxying from :8000 to localhost:5900
修改虚拟机的配置
#virsh list --all
virsh edit kvm1(虚拟机的名称)
virsh start kvm1
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
查看进程端口 netstat -tunlp
注意:
1.noVNC不包括websockify,你需要在github下载。
2.虚拟机的一些配置一定要修改(显示协议vnc,地址,端口)
3.code 400 message Bad request syntax 有时在连接过程出现这个错误,一直无法解决。
具有参考价值:
http://xiaolin0199.iteye.com/blog/2121768
http://blog.youkuaiyun.com/zcxlp/article/details/42241007