NoVNC以Web方式交付VNC遠程連接的方法
https://github.com/novnc/noVNC
一、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之間的轉換。
二、CentOS 7 安裝novnc
1. 環境
[root@novnc ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@novnc ~]# ifconfig eth0|awk 'NR==2{print $2}' 10.0.0.60 setenforce 0 systemctl stop firewalld systemctl disable firewalld
2. 安裝配置
安裝桌面環境
如何在CentOS7上安裝桌面環境
安裝tigervnc
#安裝依賴軟件包 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum install -y git tigervnc-server -y
啟動VNC服務並輸入密碼
[root@novnc ~]# vncserver :1 You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify: New 'novnc:1 (root)' desktop is novnc:1 Creating default startup script /root/.vnc/xstartup Creating default config /root/.vnc/config Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/novnc:1.log #當執行vncserver :1設置為1時,下面要運行VNC是的端口號應該是5900+1,那就是5901,VNC的默認端口是5900。 #寫入開機自啟動 chmod +x /etc/rc.d/rc.local echo '/usr/bin/vncserver :1' >>/etc/rc.d/rc.local
查看日志
cat /root/.vnc/novnc:1.log
查看端口
[root@novnc utils]# netstat -lntup|grep 59 tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 8380/Xvnc tcp6 0 0 :::5901 :::* LISTEN 8380/Xvnc
安裝noVNC
git clone https://github.com/novnc/noVNC.git
創建安全連接(一路回車)
VNC的默認會話不是安全的,我們需要創建一個安全的VNC連接,會發現提示需要輸入內容,這些字段我們並不需要都進行填寫,當啟動noVNC時,websockify將自動裝載證書。
#要將生成的self.pem文件放到noVNC/utils底下 cd ./noVNC/utils/ openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
運行noVNC
[root@novnc noVNC]# pwd /root/noVNC [root@novnc noVNC]# ./utils/launch.sh --vnc localhost:5901
測試進行訪問連接
http://ip:6080/vnc.html
設置開機自啟動
echo './root/noVNC/utils/launch.sh --vnc localhost:5901 &' >>/etc/rc.d/rc.local
安裝numpy,解決連接速度慢:
https://sourceforge.net/projects/numpy/files/
#安裝python依賴 yum install python-dev python-devel -y #上傳壓縮包解壓 unzip numpy-1.11.2.zip cd numpy-1.11.2/ python setup.py install
3. 一鍵安裝腳本
[root@novnc scripts]# cat novnc_install.sh #!/bin/bash ############################################################## # File Name: novnc_install.sh # Version: V1.0 # Author: lcx # Organization: www.in365robot.com ############################################################## # 環境優化 setenforce 0 systemctl stop firewalld systemctl disable firewalld # install vncserver && git yum install -y epel* yum install tigervnc-server git -y #啟動VNC服務並輸入密碼 echo '請輸入密碼:' vncserver :1 # download noVNC git clone git://github.com/kanaka/noVNC # 創建安全連接 cd ./noVNC/utils/ openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem # run noVNC cd ../ ./utils/launch.sh --vnc localhost:5901 & echo '請訪問 http://ip:6080/vnc.html ' # 自啟動 chmod +x /etc/rc.d/rc.local echo '/usr/bin/vncserver :1' >>/etc/rc.d/rc.local echo './root/noVNC/utils/launch.sh --vnc localhost:5901 &' >>/etc/rc.d/rc.local
[root@novnc scripts]# chmod +x /server/scripts/novnc_install.sh [root@novnc scripts]# ll /server/scripts/novnc_install.sh -rwxr-xr-x. 1 root root 903 Dec 24 18:25 /server/scripts/novnc_install.sh
三、Windows 安裝novnc
實現目標:通過瀏覽器遠程訪問Windows桌面
準備一臺Windows7 32位的虛擬機
1. 環境
UtralVNC:
Windows環境下的VNC Server,在你需要訪問的目標機器上安裝。
此處提示:生產需求為Windows7 32位,在下載UtralVNC軟件時請下載之前的較舊版本,最新版會不兼容。
Node.js:
用於執行Websockify.js。Websockify還有Python版本的,不過在Windows下不可以成功。
noVNC:
noVNC是一個HTML5 VNC客戶端
websockify-js:
noVNC是通過websockt建立鏈接,而VNC server不支持websocket,所以需要開啟websockify
代理來做 WebSockets 和 TCP sockets 之間的轉換。
2. 安裝utralNVC server
將UltraVNC軟件復制到需要遠程協助的電腦上雙擊打開安裝。
在【Select Components】界面按需要選擇上需要的組件,這裡將【UltraVNC Server】和【UltraVNC Viewer】選擇上。當需要遠程協助時安裝的電腦必須選擇上【UltraVNC Server】,【UltraVNC Viewer】是用來遠程協助的工具。點擊【next】進行下一步安裝。
安裝完成後桌面就會有快捷方式,天藍色的是服務的快捷方式,淺綠色是遠程連接的工具。同時系統托盤上會有一個天藍色的眼睛圖標的程序,這個就是vnc server。
右鍵小眼睛圖標打開菜單,點擊【Start Service】並重啟電腦。
點擊【Admin Properties】打開配置連接的密碼,連接的密碼分為可操作的密碼跟隻看的密碼。
3. 安裝Node.js
選擇npm package manager
node.js安裝完成後,需要安裝ws、optimist模塊(執行websockify.js文件所需)
npm install ws
npm install optimist
npm install mime-types
安裝完ws和optimist後會在C:\Users\Administrator\下生成node_modules目錄
4. 安裝noVNC和websockify
把noVNC.zip解壓到node_modules目錄下,再把websockify-master.zip解壓到noVNC目錄下。
5. 執行websockify.js
轉發9000端口的http鏈接到5900端口(UltraVNC Server的默認端口為5900)
C:\Users\root\node_modules\noVNC\websockify-js-master\websockify>node websockify.js –web C:\Users\root\node_modules\noVNC 9000 localhost:5900
在瀏覽器訪問http://192.168.1.163:9000/會出現這樣的提示
需要把websockify.js
中的filename += ‘/index.html'
改成filename += ‘/vnc.html';
點擊鏈接輸入UltraVNC設置的密碼 完成。
6. 防火墻新建入站規則
如果被禁止訪問,需要允許訪問的9000端口進入
7. Windows開機自啟動設置
windows自啟動bat腳本鏈接
#1. 桌面新建自啟動批處理文件start.bat
@echo off
start “cmd” “cd C:\Users\root\node_modules\noVNC\websockify-js-master\websockify\” & node websockify.js –web C:\Users\root\node_modules\noVNC 9000 localhost:5900″
打開運行,輸入shell:startup
回車。將start.bat啟動文件放入文件夾
四、通過open微皮恩訪問noVNC
在open微皮恩服務端通過執行一鍵生成腳本生成客戶端證書novnc01
#查看內網IP信息 [root@open微皮恩-novnc ~]# ifconfig eth0|awk 'NR==2{print $2}' 172.17.43.166 #查看公網IP信息 [root@open微皮恩-novnc ~]# curl ifconfig.me 182.92.226.114 [root@open微皮恩-novnc ~]#git clone https://github.com/Nyr/open微皮恩-install.git [root@open微皮恩-novnc ~]# ls open微皮恩-install/ LICENSE.txt open微皮恩-install.sh README.md [root@open微皮恩-novnc open微皮恩-install]# cd open微皮恩-install/ && bash open微皮恩-install.sh #安裝步驟請看之前文檔,一鍵生成客戶端證書 [10:54 root@openvpn-novnc ~/openvpn-install]# bash openvpn-install.sh Looks like OpenVPN is already installed. What do you want to do? 1) Add a new user 2) Revoke an existing user 3) Remove OpenVPN 4) Exit Select an option: 1 Tell me a name for the client certificate. Client name: novnc Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Generating a 2048 bit RSA private key ...........................................................................................+++ ...........+++ writing new private key to '/etc/openvpn/server/easy-rsa/pki/private/novnc.key.XHM8ERJnnn' ----- Using configuration from ./safessl-easyrsa.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'novnc01' Certificate is to be certified until Dec 27 02:56:23 2029 GMT (3650 days) Write out database with 1 new entries Data Base Updated Client novnc01 added, configuration is available at: /root/novnc.ovpn
將生成的證書上傳到安裝有novnc的PC客戶端上
下載windows7版的客戶端軟件openvpn-gui
https://www.techspot.com/downloads/5182-openvpn.html
進行連接
在另一臺PC客戶端上也生成證書進行連接訪問
openvpn斷開連接,則novnc的連接也隨即斷開
到此這篇關於NoVNC—以Web方式交付VNC遠程連接的文章就介紹到這瞭,更多相關NoVNC Web方式交付VNC遠程連接內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 淺談swoole的作用與原理
- 如何啟動一個Vue.js項目
- Webpack-cli安裝成功後查看webpack -v報錯案例詳解
- vue在install時[email protected] postinstall:node scripts/build.js錯誤解決
- Springboot實現VNC的反向代理功能