1. 程式人生 > >noVNC連接多臺遠程主機

noVNC連接多臺遠程主機

spl sel tro .com 代理 17.1 etc 安裝 install

noVNC是一個HTML5 VNC客戶端,采用HTML5 websockets、Canvas和JavaScript實現,noVNC被普遍應用於各大雲計算、虛擬機控制面板中,比如OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。前面說了 noVNC 采用 WebSockets 實現,但是目前大多數 VNC 服務器都不支持 WebSockets,所以 noVNC 是不能直接連接 VNC 服務器的,怎麽辦呢?這就需要一個代理來實現websockets和tcp sockets之間的轉換,這個代理就是websockify。

使用noVNC遠程訪問多個遠程主機,拓撲結構如下。

技術分享圖片

只需要一臺機器作為noVNC代理,其他被訪問的機器安裝VNC server就可以了。

vncserver安裝和使用

主機Target2

Target2主機是CentOS操作系統,可以使用tigervnc-server作為VNC server。

安裝:

[root@localhost Desktop]# yum install tigervnc-server -y

安裝完後,查看vncserver的配置文件:

[root@localhost Desktop]# rpm -qc tigervnc-server
/etc/sysconfig/vncservers

在該配置文件中可以修改vncserver的配置,比如遠程桌面的sessionnumber,登錄時的用戶名,屏幕分辨率等等。

啟動sncserver:

vncserver
或
vncserver :n

這裏的n就是sessionnumber,不指定的話默認為1,第一次啟動時會提示輸入密碼,以後也可以使用vncpasswd命令修改密碼。VNC的默認端口號是5900,而遠程桌面連接端口號則是5900+n。如果使用“vncserver :1”命令啟動VNC Server,那麽端口應該是5901。

查看連接:

[root@localhost Desktop]# vncserver -list

TigerVNC server sessions:

X DISPLAY #    PROCESS ID
:2        2968
:1        2680
[root@localhost Desktop]# 

我這裏建立了兩個vnc連接,端口號分別是5902和5901。

如果想要刪除連接,使用:

vncserver -kill :n

主機Target1

Target1主機是Windows Server 2008 r2操作系統,可以使用tigervnc-server作為VNC server。

技術分享圖片

直接安裝即可。

安裝完成後,配置,設置連接vnc server密碼等:

技術分享圖片

技術分享圖片

技術分享圖片

使用noVNC連接VNC server

noVNC原理

noVNC提供一種在網頁上通過html5的Canvas,訪問機器上vncserver提供的vnc服務,需要做tcp到websocket的轉化,才能在html5中顯示出來。網頁就是一個客戶端,類似win下面的vncviewer,只是此時填的不是裸露的vnc服務的ip+port,而是由noVNC提供的websockets的代理,在noVNC代理服務器上要配置每個vnc服務,noVNC提供一個標識,去反向代理所配置的vnc服務。

noVNC安裝和使用

安裝noVNC

Node1上安裝noVNC,如果Node1沒有安裝git,先安裝git

[root@localhost Desktop]# yum install git -y

安裝noVNC

[root@localhost ~]# git clone git://github.com/kanaka/noVNC

使用token

為什麽使用token?

我們想通過noVNC訪問局域網中的所有機器,難道要給每一臺機器都安裝配置noVNC,然後用每臺機器的IP地址去訪問它嗎?顯然這種做法是繁瑣笨拙的。實際上,我們只需要一臺機器作為noVNC代理,其他被訪問的機器安裝VNC server就可以了。

技術分享圖片

在上圖中,我們用一臺機器作為代理,IP:10.70.117.190,另外兩臺機器Target1:10.70.117.181和Target2:10.70.117.183上面安裝vncserver,我們怎麽通過代理去訪問Target1和Target2呢?這就需要token大顯身手了。

我們需要在代理機器上創建一個token配置文件,/root/noVNC/token/token.conf文件內容為:

target1: 10.70.117.181:5900
target2: 10.70.117.183:5902

Target1的主機ip是10.70.117.181,vnc連接端口是5900,Target2的主機ip是10.70.117.183,vnc連接端口是5902。

然後在代理機器Node1上輸入命令:

[root@localhost noVNC]# ./utils/websockify/websockify.py --web ./ --target-config=./token/token.conf 6080

現在一切就緒,可以使用瀏覽器實現遠程桌面了。

註:記得關閉防火墻,或設置防火墻端口例外。

遠程桌面到Target1

在瀏覽器輸入http://10.70.117.190:6080/vnc.html?path=websockify/?token=target1

點擊鏈接,輸入vncserver密碼

技術分享圖片

技術分享圖片

成功遠程桌面到Target1

遠程桌面到Target2

在瀏覽器輸入http://10.70.117.190:6080/vnc.html?path=websockify/?token=target2

點擊鏈接,輸入vncserver密碼

技術分享圖片

noVNC連接多臺遠程主機