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

image.png

設置開機自啟動

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!

推薦閱讀: