1. 程式人生 > 程式設計 >NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

https://.com/novnc/noVNC

NoVNC以Web方式交付VNC遠端連線的方法

一、noVNC是什麼

noVNC是一個 HTML5 VNC 客戶端,採用 HTML 5 WebSockets,Canvas 和 實現,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  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上安裝桌面環境

NoVNC以Web方式交付VNC遠端連線的方法

安裝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/http://www.cppcns.com
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以Web方式交付VNC遠端連線的方法

執行noVNC

[root@novnc noVNC]# pwd
/root/noVNC
[root@novnc noVNC]# ./utils/launch.sh --vnc localhost:5901

NoVNC以Web方式交付VNC遠端連線的方法

測試進行訪問連線

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/

#安裝依賴
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]# http://www.cppcns.comll /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位的虛擬機器

NoVNC以Web方式交付VNC遠端連線的方法

1. 環境

UtralVNC:

Windows環境下的VNC Server,在你需要訪問的目標機器上安裝。

此處提示:生產需求為Windows7 32位,在下載UtralVNC軟體時請下載之前的較舊版本,最新版會不相容。

Node.:

用於執行Websockify.js。Websockify還有Python版本的,不過在Windows下不可以成功。

noVNC

noVNC是一個HTML5 VNC客戶端

websockify-js

noVNC是通過websockt建立連結,而VNC server不支援websocket,所以需要開啟websockify代理來做 WebSockets 和 TCP sockets 之間的轉換。

NoVNC以Web方式交付VNC遠端連線的方法



2. 安裝utralNVC server

將UltraVNC軟體複製到需要遠端協助的電腦上雙擊開啟安裝。

NoVNC以Web方式交付VNC遠端連線的方法

在【Select Components】介面按需要選擇上需要的元件,這裡將【UltraVNC Server】和【UltraVNC Viewer】選擇上。當需要遠端協助時安裝的電腦必須選擇上【UltraVNC Server】,【UltraVNC Viewer】是用來遠端協助的工具。點選【next】進行下一步安裝。

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

安裝完成後桌面就會有快捷方式,天藍色的是服務的快捷方式,淺綠色是遠端連線的工具。同時系統托盤上會有一個天藍色的眼睛圖示的程式,這個就是vnc seILaGBrver。

NoVNC以Web方式交付VNC遠端連線的方法

右鍵小眼睛圖示開啟選單,點選【Start Service】並重啟電腦。

NoVNC以Web方式交付VNC遠端連線的方法

點選【Admin Properties】開啟配置連線的密碼,連線的密碼分為可操作的密碼跟只看的密碼。

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

3. 安裝Node.js

NoVNC以Web方式交付VNC遠端連線的方法

選擇npm package manager

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

node.js安裝完成後,需要安裝ws、optimist模組(執行websockify.js檔案所需)

npm install ws

NoVNC以Web方式交付VNC遠端連線的方法

npm install optimist

NoVNC以Web方式交付VNC遠端連線的方法

npm install mime-types

NoVNC以Web方式交付VNC遠端連線的方法

安裝完ws和optimist後會在C:\Users\Administrator\下生成node_modules目錄

NoVNC以Web方式交付VNC遠端連線的方法

4. 安裝noVNC和websockify

把noVNC.zip解壓到node_modules目錄下,再把websockify-master.zip解壓到noVNC目錄下。

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

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

NoVNC以Web方式交付VNC遠端連線的方法

在瀏覽器訪問http://192.168.1.163:9000/會出現這樣的提示

NoVNC以Web方式交付VNC遠端連線的方法

需要把websockify.js中的filename += ‘/index.html'改成filename += ‘/vnc.html';

NoVNC以Web方式交付VNC遠端連線的方法

點選連結輸入UltraVNC設定的密碼 完成。

NoVNC以Web方式交付VNC遠端連線的方法
NoVNC以Web方式交付VNC遠端連線的方法

6. 防火牆新建入站規則

如果被禁止訪問,需要允許訪問的9000埠進入

NoVNC以Web方式交付VNC遠端連線的方法

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啟動檔案放入資料夾

NoVNC以Web方式交付VNC遠端連線的方法

四、通過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
.....................................................ILaGB......................................+++
...........+++
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客戶端上

NoVNC以Web方式交付VNC遠端連線的方法

下載windows7版的客戶端軟體openvpn-gui

https://www.techspot.com/downloads/5182-openvpn.html

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

進行連線

NoVNC以Web方式交付VNC遠端連線的方法

在另一臺PC客戶端上也生成證書進行連線訪問

NoVNC以Web方式交付VNC遠端連線的方法

NoVNC以Web方式交付VNC遠端連線的方法

openvpn斷開連線,則novnc的連線也隨即斷開

到此這篇關於NoVNC—以Web方式交付VNC遠端連線的文章就介紹到這了,更多相關NoVNC Web方式交付VNC遠端連線內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!