局域网环境远程控制解决方案(利用tightvnc和noVNC)

由于客户端存在C/S软件,需要嵌入到网页并进行远程控制,下面是解决方案

=============================================================================================
原理

0
. 原理:被控主机(vnc server) => websockify映射到websocket => 控制端(管理员用户)以web形式远程控制
=============================================================================================
被控端

1.1 被控主机下载最新版本的tightvnc并(以典型模式)安装,软件官网 https://www.tightvnc.com/ 1.2 安装过程中根据提示,设定远程控制密码 1.3 安装完毕后,tightvnc服务端(vnc server)即自动开始运行

=============================================================================================
控制端
2.1 最新版本novnc代码(github仓库 https://github.com/novnc/noVNC),解压代码后部署到web服务器(纯前端代码) 2.2 修改nginx配置,使vnc.html可以被浏览器正确访问到 (修改nginx.cnf里面server里的root的路径) 3.1 修改nginx配置,websocket配置示例 location /websockify { proxy_http_version 1.1; proxy_pass http://127.0.0.1:6080/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # VNC connection timeout proxy_read_timeout 61s; # Disable cache proxy_buffering off; } 3.2 安装websockify:pip3 install websockify 3.3 运行:python3 -m websockify 127.0.0.1:6080 192.168.1.119:5900 #前面是websocket地址(与nginx配置内容一致),后面是vnc地址(即tightvnc的server地址,5900为默认端口)
这里需要注意,如果python环境版本比较多,可以用python3 -m websockify的形式
4. 浏览器打开 vnc.html,输入正确的远程控制密码即可 5. 经测试,vnc.html可以用iframe加载

==============================================================================================
如果想控制多台主机呢
1. nginx的配置文件增加location,端口修改,同时,配置文件的/websockify也需要进行修改,有几份复制几份,可以修改为/websockify_one......。
2. 对应2.1的noVNC的vnc.html也要复制对应的份数,文件名修改为vnc_one.html.....,然后修改代码,找到vnc_one.html里面的代码websockify,对应修改location的地址
3. 对应的websockify也需要启动对应的N个
4. 修改noVNC下面的app/ui.js的代码。
修改为:
UI.initSetting('path', document.getElementById('noVNC_setting_path').attributes['value'].value)
 
作者:沐禹辰
出处:http://www.cnblogs.com/renfanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
原文地址:https://www.cnblogs.com/renfanzi/p/14850705.html