Web 访问的利器 noVnc

NoVnc

	NoVnc:Web 端的Vnc软件、可以直接通过网页访问远程主机,采用 HTML5、WebSockets、Canvas和 JavaScript 实现,被普遍用在各大云平台中。网页就是一个客户端、类似 Windows 下的 vncviewer 。

系统环境


  • CentOS 6.8
  • Novnc
  • websockify
  • numpy-1.8.2

安装配置


$ yum istall -y git
$ git clone https://github.com/novnc/noVNC.git   //从GitHub 克隆

快速开始


$ cd noVNC
$ ./utils/launch.sh --vnc localhost:5901          ##第一次会帮我们下载Websokify

开始访问


WebSocket server settings:
  - Listen on :6080
  - Web server. Web root: /vnc/noVNC
  - No SSL/TLS support (no cert file)
  - proxying from :6080 to 192.168.1.32:5901


Navigate to this URL:                  //跳转

    http://compute2:6080/vnc.html?host=compute2&port=6080

下面只需要在浏览器打开这个地址就可以访问了、Enjoy it~~

http://192.168.1.32:6080/vnc.html   ##也可以访问这个地址

整个流程大概是这样的

vnc.html -> 192.168.1.32:6080(PC2) -> websockify.py -> localhost:5901

高级用法


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

./utils/websockify/websockify.py --web ./ 8787 localhost:5901

--web ./指定访问根目录,8787表示访问novnc的端口,localhost可以改成所有安装了vncserver的IP地址,比如:./utils/websockify/websockify.py --web ./ 8787 192.169.1.100:5901

代理设置


​ 我们上面的场景是基于noVNC代理和vncserver在同一台机器上的,倘若我们想通过noVNC访问局域网中的所有机器,难道要给每一台机器都安装配置noVNC,然后用每台机器的IP地址去访问它吗?显然这种做法是繁琐笨拙的。实际上,我们只需要一台机器作为noVNC代理,其他被访问的机器安装VNC server就可以了。

  • 代理服务器: 192.168.1.191
  • 计算节点:192.168.1.31、192.168.1.32、192.168.1.33

在代理服务器上创建 token 文件

$ mkdir token
$ cat token.conf
abc123: 192.168.1.32:5900
abc456: 192.168.1.32:5901
abc123: 192.168.1.33:5900
$pwd
/root/noVNC/token

配置文件记得中间以空格分开

启动Vncserver

在欲访问的机器上启动 vncserver , 执行 vncserver 即可

代理服务器执行

$ yum install -y screen         //新开screen 窗口输入、防止被打断
$ screen -R vnc                 //这里会进入一个新的会话窗口
$ ./utils/websockify/websockify.py --web ./ --target-config=./token/token.conf 8787
ctrl a +d 退出screen

浏览器输入

http://192.168.1.191:8787/vnc.html?path=?token=abc123    //这里的token改为对应的token

这样就可以直接访问了,Enjoy…

问题排查


访问速度慢:安装numpy
$ cd /usr/local/src
$ wget http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.8.2/numpy-1.8.2.tar.gz
$ tar xvf numpy-1.8.2
$ cd numpy-1.8.2               ##yum install python-devel 缺少什么就装一下
$ python setup.py install

测试是否安装成功

>>> from numpy import *
>>> eye(4)
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])
>>> 
  • 如果输入host地址,port之后,不能访问,查看密码是否正确,如果显示connection refused,查看被访问主机vncserver是否启动,如果未启动,执行vncserver

    使用noVNC每个系统桌面或者虚拟机每次只能有一个连接,如果连接时出现错误Server disconnected (code: 1000, reason: Target closed),也有可能是你已经连接了或者在virt-manager里面启动了虚拟机并进入了系统桌面。



你可能感兴趣的:(Vnc,linux)