1.VNC本身提供的http连接方式,可传输文件,画面有卡顿,需要安装jre
2.noVNC访问方式,不可传输文件,画面较为流畅,不用安装插件运行环境
一、noVNC 是什么
Web 端的Vnc软件,通过noVNC,可以直接使用web浏览器访问vnc server。采用 HTML5、WebSockets、Canvas和 JavaScript 实现,被普遍用在各大云平台中。
网页就是一个客户端、类似 Windows 下的 vncviewer 。
VNC (Virtual Network Console)是虚拟网络控制台的缩写,分为server端和client端两部分,分别部署完成后在server端简单的配置即可使用,基于TCP的通信。noVNC项目是通过取消VNC Client的安装,直接通过浏览器访问noVNC,然后由noVNC间接访问VNC server来达到client web化。
大致实现原理是:
1.已经安装好的vncserver不需要做任何的改动
2.浏览器不支持VNC,所以不能直接连接VNC,但是可以使用代理,使用noVNC通过WebSocket建立连接,而VNC Server不支持WebSocket,所以需要开启Websockify代理来做WebSocket和TCP Socket之间的转换。
二、noVNC的安装
- 环境:Ubuntu 22.04
- VNC服务:使用Ubuntu 22.04 自带的VNC服务
2.1 下载noVNC的代码
git clone https://github.com/novnc/noVNC.git
2.2 启动noVNC
启动脚本是:novnc_proxy
chmod +755 /noVNC/utils/novnc_proxy # 添加可执行权限
./novnc_proxy --vnc localhost:5900 # 第一次会帮我们下载Websokify 需要安装git环境
注:如果运行bash脚本显示“: /usr/bin/env: "bash\r";请
用vim打开sh脚本文件, 重新设置文件的格式
:set ff 然后回车 再重新设置下文件格式:
:set ff=unix 然后保存退出
2.3 开放6080端口
sudo firewall-cmd --add-port=6080/tcp --permanent
sudo firewall-cmd --reload
2.4 Ubuntu远程桌面开启
三、浏览器访问vnc
http://IP地址:6080/vnc.htm # 浏览器打开这个地址就可以访问了
新连接访问权限确认方式
需要密码方式:
提示:服务器图形界面锁屏状态,是无法连接的
四、总结
应用到的技术即安装的应用:
- python-3.8.10 该版本和以下版本组件组合,验证过能正常运行(python 3.6.8测试异常)
- websockify-0.10.0 该项目有python版本和node js版本
- noVNC-1.3.0 HTML 形式的app
- VNC服务 种类比较多UltraVNC、TightVNC等
参考来源:
Web 访问的利器 noVnc_novnc网页版-****博客
All in Web | 基于web的远程桌面-noVNC - 知乎
https://www.cnblogs.com/minseo/p/15949100.html