MENU

Centos 7安装KVM之VNC环境安装篇

September 10, 2019 • Read: 25 • 技术

简介

noVNC既是HTML VNC客户端、JavaScript库,也是构建在该库之上的应用程序,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现。noVNC在任何现代浏览器中运行良好,包括移动浏览器(iOS和Android)。许多公司,项目和产品都集成了noVNC,包括 OpenStack ,OpenNebula ,LibVNCServer和ThinLinc。

特性

  • 支持缩放,剪裁和调整桌面大小
  • 支持本地光标渲染
  • 剪贴板复制/粘贴
  • 支持所有现代浏览器,包括移动端
  • 支持的VNC编码:Raw,Copyrect,Hextile,RRE,ZRLE

要求

noVNC遵循标准VNC协议,但与其他VNC客户端不同,它确实需要WebSockets支持。但是目前大多数 VNC 服务器都不支持 WebSockets,所以 noVNC 是不能直接连接 VNC 服务器的,它需要通过代理来实现websockets和tcp sockets之间的转换,这个代理就是websockify。

安装vncserver

[root@master_stable noVNC]# yum -y install tigervnc-server
[root@master_stable noVNC]# rpm -qc tigervnc-server                //查看配置文件位置
[root@master_stable noVNC]# vncserver :n                            //启动vncserver

常用命令

[root@master_stable noVNC]# vncserver -list
[root@master_stable noVNC]# vncserver -kill :n

注意事项

VNC的默认端口号是5900,而远程桌面连接端口号则是5900+n;

安装noVNC

好了,介绍完noVNC的特性和使用要求后,下面我们开始安装noVNC。

[root@master_stable noVNC]# git clone https://github.com/kanaka/noVNC
[root@master_stable noVNC]# cd noVNC
[root@master_stable noVNC]# ./utils/launch.sh --vnc localhost:5900
Using local websockify at /home/kvm/noVNC/utils/websockify/run
Starting webserver and WebSockets proxy on port 6080
websockify/websocket.py:30: UserWarning: no 'numpy' module, HyBi protocol will be slower
  warnings.warn("no 'numpy' module, HyBi protocol will be slower")
WebSocket server settings:
  - Listen on :6080
  - Web server. Web root: /home/kvm/noVNC
  - SSL/TLS support
  - proxying from : 6080 to localhost:5900

如果关闭的时候再启用提示6080端口被占用,可以用以下命令查看并关闭:

[root@master_stable noVNC]# fuser -k 6080/tcp                    //查看端口
[root@master_stable noVNC]# fuser 6080/tcp                       //关闭端口
流程大概是:
vnc.html -> 172.16.15.62:8000 -> websockify.py -> localhost:5900

思路

使用websockify.py在目标服务器搭建一个代理,并进行端口转发,然后用vnc.html访问这个地址就可以了。

使用token

使用websockify可以更改默认6080端口,使用token设置。

./utils/websockify/websockify.py —web ./ 8008 localhost:5901

—web ./### 指定访问根目录,8008表示访问novnc的端口,localhost可以改成所有安装了vncserver的IP地址,比如:

./utils/websockify/websockify.py —web ./ 8008 localhost:5901 。

token作用

以上的方法适用于同一台服务器的使用,如果是多台服务器怎么办呢?难道每台都要配置noVNC,然后逐一去访问它吗?显然这是不够科学的,我们应该在一台机器上配置noVNC,然后其他机器配置vncserver用token访问就可以了。

首先,创建token配置文件:

[root@master_stable noVNC]# touch token.conf
//启动noVNC
[root@master_stable noVNC]# ./utils/websockify/websockify.py --web ./ --target-config=./token.conf 8008

然后就可以访问x.x.x.x.:8008/vnc.html,输入token即可访问相应的机器了。注意,别忘了开启vncserver,否则将无法连接到服务器。

Last Modified: September 14, 2019
Archives Tip
QR Code for this page
Tipping QR Code