通过noVNC实现远程连接windows桌面
需求:
最近项目需要能够实现远程桌面,目标桌面是windows系统,发起源是我们后台管理系统的一个子页面,这就需要通过网页打开远程桌面并进行链接,所以我们选用了noVNC。网上大部分都是linux系统为服务器端,现在我就介绍下windows系统为服务器端的情况。
准备工作:
noVNC简介:我们集成在管理系统中的vnc访问客户端,提供一种在网页上通过html5的Canvas,通过这个在线网页发起vnc请求,访问目标机器上vncserver提供的vnc服务。
参考https://kanaka.github.io/noVNC/
utralVNC简介:windows的vnc服务器,在你需要访问的目标机器上安装。
参考 http://www.uvnc.com/
websockify简介:noVNC是通过websockt建立链接,而VNC server不支持websocket,所以需要开启websockify代理来做 WebSockets 和 TCP sockets 之间的转换。
参考:https://github.com/kanaka/websockify
开始:
1. 目标服务器安装好utralVNC,并开启服务器。
2.在目标服务器上面开启websockify进行端口转发
进入websockify-master\websockify-master\other\js
启动node服务器(这边直接$node websockify.js会报错,记得安装相关js模块 )
输入:node websockify.js 8000 localhost:5900 转发8000端口的http链接到5900端口(具体看vnc的设置,有些服务器的端口不一定是5900)即vnc服务器端口,从而建立链接。
3.配置路由器的转发,使你可以通过外网访问到局域网中特定的机器。
下图是我们用的小米路由器的设置,其他路由器自行搜索方法。
注意:这边的外部端口(图中8001)是noVNC页面外网访问时候需要填写的端口,这边的内部端口(图中8000)是路由转发的端口,即这个端口必须和websockify.js监听的端口一致,参考第二步,websockify.js监听转发的端口也是8000。
4. 找到目标服务器的公网IP并通过noVNC访问
Extension:
1.多台服务器可以在路由器转发的时候设置不同的端口来进行访问。
2.realVNC tightVNC的服务器测试均不能通过noVNC访问,有一些诡异的报错。
3.现在的链接都是非加密的,加密的链接还没尝试。python服务器的通信加密在linux机器下测试可行。