noVNC使用与介绍报告
1. 概述
VNC(Virtual Network Console,虚拟网络控制台)是一种流行的远程桌面访问协议,它允许用户通过网络连接到远程计算机的图形界面。VNC协议的实现通常包括两个主要组件:服务器端(Server)和客户端(Client)。
其中VNC-Server部署在需要被远程访问的机器上。它负责捕获图形界面,处理输入事件,并将这些信息发送到VNC客户端。VNC-Client运行在用户本地机器上。它负责显示远程桌面的图像,接收用户的输入,并将这些输入发送到VNC Server。
1.1 什么是noVNC?
noVNC是一种基于Web的VNC客户端,它利用HTML5的Canvas元素在网页上实现对VNC服务器的访问。与传统的VNC客户端不同,noVNC不需要安装任何额外的软件或插件,仅需通过浏览器即可实现远程桌面访问。
1.2 工作原理
由于现代Web浏览器对直接访问TCP/IP服务有限制,因此noVNC通过将TCP协议转换为WebSocket协议,使得在浏览器中显示VNC服务成为可能(通过Websockify代理实现)。以下是noVNC的工作流程:
WebSocket代理:noVNC服务器充当WebSocket代理,接收来自Web客户端的WebSocket连接请求。
TCP到WebSocket的转换:代理服务器将WebSocket连接转换为TCP连接,进而连接到VNC服务器。
反向代理配置:在noVNC代理服务器上,需要为每个VNC服务配置反向代理,确保通过noVNC提供的WebSocket连接可以正确访问对应的VNC服务。
访问标识:noVNC为每个VNC服务提供一个唯一的标识,客户端通过这个标识连接到相应的VNC服务。
1.3 noVNC的特点
(1) 支持所有现代浏览器,包括移动设备(iOS,Android)。
(2) 支持的身份验证方法:无验证,经典VNC,RealVNC的RSA-AES,Tight,VeNCrypt Plain,XVP,苹果的Diffie-Hellman,UltraVNC的MSLogonII。
(3) 支持的VNC编码:原始编码,copyrect,rre,hextile,tight,tightPNG,ZRLE,JPEG。
(4) 支持桌面缩放、裁剪和调整大小。
(5) 本地光标渲染,并支持完整Unicode的剪贴板复制/粘贴。
(6) 支持触摸手势用于模拟常见的鼠标操作,并提供翻译功能。
2. 安装和配置
Linux的安装配置详细步骤于官网:noVNC-Linux版本快速上手。
Windows安装配置:
(1) 下载对应的VNC软件以支持身份验证。由于软件库只有TightVNC,因此以TightVNC作为身份验证的方式。
(2) 设置VNC Password,如图1所示。
(3) 由于需要进行测试,配置允许回环连接,如图2所示。
(4) 安装node.js以配置代理
(5) 通过node安装ws、optimist、mime-types模块(执行websockify.js文件所需)
npm install ws
npm install optimist
npm install mime-types
(6) 在node_modules文件夹中安装noVNC与websockify-js
git clone https://github.com/novnc/noVNC
git clone https://github.com/novnc/websockify-js.git
(7) 修改所下载的websockify.js,如图3所示。
(8) 启动代理服务(websockify)
node // 使用node执行websockify.js
C:\Users\xxxxxxx // websockify.js文件路径
–web C:\Users\xxxxx // 启动端口为9000
localhost:5900 // 转发的VNC地址和端口
若成功则为图4所示。
3. 结果展示
图5 访问对应端口
图6 进行身份验证
xxxxxxxxx
图7 成功访问