由於客戶端存在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)