通过noVnc实现远程控制

2022-11-04阅读(3860)评论(0)牵着狗狗看MM

苏州实时公交查询

noVnc是什么

noVNC是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。
noVNC采用WebSockets实现,但是目前大多数VNC服务器都不支持 WebSockets,所以noVNC是不能直接连接 VNC 服务器的,需要一个代理来做WebSockets和TCP sockets 之间的转换。这个代理在noVNC的目录里,叫做websockify 。
**目标:**通过浏览器远程访问Windows桌面。
**原理:**浏览器不支持VNC,所以不能直接连接VNC,但是可以使用代理,使用noVNC通过WebSocket建立连接,而VNC Server不支持WebSocket,所以需要开启Websockify代理来做WebSocket和TCP Socket之间的转换。

网络拓扑图

noVnc网络拓扑图

准备工作

被远程电脑

需安装 vnc服务端(tightvnc
这里使用window电脑安装,并设置连接密码:12345678,IP:电脑IP,tightvnc默认端口:5900

代理服务器

需要有python3、nodejs

下载noVnc源码并启动

git clone https://github.com/novnc/noVNC.git
访问单机
noVNC/utils/novnc_proxy --vnc 电脑IP:5900
打开浏览器输入访问地址:http://代理服务器IP:6080/vnc.html  ,点击连接,输入客户机的密码12345678即可访问

访问多台

网上很多教程都是配置好token文件,达到访问多台的效果,万一用户输错了,还得检查一遍,那有没有办法实现无需token输入目标电脑的IP+端口就能远程的方法呢?

有!!!↓↓↓↓

方法如下↓

修改noVNC/utils/websockify/websockify/token_plugins.py 如下:
def lookup(self, token):
        if self._targets is None:
            self._load_targets()

        if token in self._targets:
            return self._targets[token]
        else:
            if re.search(r'\d{2,3}(\.\d{1,3}){3}:\d{2,5}', token):
                return token.split(':')
            else:
                return None

这样就可以通过浏览器输入IP+端口即可访问对应机器

启动命令
/root/noVNC/utils/websockify/run --web ../../ --token-plugin TokenFile --token-source /root/noVNC/utils/websockify/token.conf 6080
打开浏览器访问:http://代理服务器IP:6080/vnc.html?path=websockify?token=目标电脑IP:5900
 
赞(0)
转载请注明来源:Web前端(W3Cways.com) - Web前端学习之路 » 通过noVnc实现远程控制
分享到: 更多 (0)