基于web的远程桌面部署-noVNC
| 分类:软件工具 | 阅读量:170
标签:noVNC , 远程桌面
原文地址:山姆实验室 - All in Web | 基于web的远程桌面-noVNC.
在日常工作中,对于需要远程连接到主机的需求,无论是 Windows ,Mac,Linux平台,还是移动端等平台,都有相应的整套解决方案,其中基于标准的协议实现的,有大名鼎鼎的VNC,使用的RFB协议,和Windows远程服务客户端(mstsc),使用的RDP协议 。
但是作为使用者来访问时,都需要安装对应的 client ,在跨平台使用上会有些许的不便,甚至一些小众的平台无法使用。在如今 web 大行其道背景下,就有一款产品实现的 VNC client 的 web 化,并且免费开源-它就是 noVNC。
什么是 VNC 和 noVNC?
VNC (Virtual Network Console)是虚拟网络控制台的缩写,分为 server 端和 client 端两部分,分别部署完成后在 server 端简单的配置即可使用,基于TCP的通信。noVNC项目是通过取消 VNC Client 的安装,直接通过浏览器访问noVNC,然后由noVNC间接访问 VNC server 来达到 client web 化。从上面部署方式看到,VNC server 仍然保留且没有任何修改,处理的始终是TCP流量,但是浏览器和 noVNC 之间是在 http 基础上使用 WebSocket 交互,由于 VNC server 无法处理 websocket 流量,因此引入了 websockify ,noVNC 的姐妹项目,负责把 WebSocket 流量转换为普通的TCP流,使 VNC server 正常工作。noVNC 其实是一个HTML形式的APP,websockify 并充当了一个 mini web server 的角色,当浏览器访问时,会通过网络加载运行 noVNC。
部署 noVNC
现在我们按照上图的架构图来部署看看, websockify 和 VNC Server 安装在同一台服务器上。
需要的材料:
- python-3.8.10 该版本和以下版本组件组合,验证过能正常运行(python 3.6.8测试异常);
- websockify-0.10.0 该项目有 python 版本和 nodejs 版本;
- noVNC-1.3.0 HTML 形式的app;
- UltraVNC_1_3_42_X64 适合Windows的VNC,当然也可以试试TightVNC;
在服务端安装python,安装UltraVNC,解压 noVNC 和 websockify;
cmd 下,cd 到 websockify 根目录,执行:
python setup.py install
完毕后,任意目录 执行 websockify --help
确认是否安装成功。
然后开启 websockify:
websockify.exe 5901 127.0.0.1:5900 --web C:\xxxx\noVNC\noVNC-1.3.0
会有如下输出:
WARNING: no 'resource' module, daemonizing is disabled
WebSocket server settings:
- Listen on :5901
- Web server. Web root: C:\Users\Administrator\Desktop\noVNC\noVNC-1.3.0
- No SSL/TLS support (no cert file)
- proxying from :5901 to 127.0.0.1:5900
第一个参数 5901: 表示websockify 自身监听的端口,即自身作为min web server向浏览器提供服务的端口
第二个参数 127.0.0.1:5900 表示UltraVNC监听的端口
第三个参数 --web C:\xxxx\noVNC\noVNC-1.3.0 表示min web server(websockify)的网站服务的根目录,即为noVNC-1.3.0的根目录,且该目录下vnc.html文件为主页文件
最后设置UltraVNC密码,确认监听端口为5900:
以上,顺利的话就可以通过浏览器访问该服务器了,注意是此时是HTTP.
如果更改 noVNC-1.3.0 目录下 vnc.html 为 index.html,则访问时不用输入 vnc.html, 直接 http://x.x.x.x:5901 即可