需求:
最近項(xiàng)目需要能夠?qū)崿F(xiàn)遠(yuǎn)程桌面盹沈,目標(biāo)桌面是windows系統(tǒng),發(fā)起源是我們后臺(tái)管理系統(tǒng)的一個(gè)子頁面,這就需要通過網(wǎng)頁打開遠(yuǎn)程桌面并進(jìn)行鏈接请契,所以我們選用了noVNC。網(wǎng)上大部分都是linux系統(tǒng)為服務(wù)器端夏醉,現(xiàn)在我就介紹下windows系統(tǒng)為服務(wù)器端的情況爽锥。
準(zhǔn)備工作:
noVNC簡介:我們集成在管理系統(tǒng)中的vnc訪問客戶端,提供一種在網(wǎng)頁上通過html5的Canvas畔柔,通過這個(gè)在線網(wǎng)頁發(fā)起vnc請(qǐng)求氯夷,訪問目標(biāo)機(jī)器上vncserver提供的vnc服務(wù)。
參考https://kanaka.github.io/noVNC/ ?
utralVNC簡介:windows的vnc服務(wù)器靶擦,在你需要訪問的目標(biāo)機(jī)器上安裝腮考。
參考 http://www.uvnc.com/
websockify簡介:noVNC是通過websockt建立鏈接,而VNC server不支持websocket奢啥,所以需要開啟websockify代理來做 WebSockets 和 TCP sockets 之間的轉(zhuǎn)換秸仙。
參考:https://github.com/kanaka/websockify
開始:
1. 目標(biāo)服務(wù)器安裝好utralVNC,并開啟服務(wù)器桩盲。
2.在目標(biāo)服務(wù)器上面開啟websockify進(jìn)行端口轉(zhuǎn)發(fā)
進(jìn)入websockify-master\websockify-master\other\js
啟動(dòng)node服務(wù)器(這邊直接$node websockify.js會(huì)報(bào)錯(cuò)寂纪,記得安裝相關(guān)js模塊 )
輸入:node websockify.js 8000 localhost:5900 轉(zhuǎn)發(fā)8000端口的http鏈接到5900端口(具體看vnc的設(shè)置,有些服務(wù)器的端口不一定是5900)即vnc服務(wù)器端口赌结,從而建立鏈接捞蛋。
3.配置路由器的轉(zhuǎn)發(fā),使你可以通過外網(wǎng)訪問到局域網(wǎng)中特定的機(jī)器柬姚。
下圖是我們用的小米路由器的設(shè)置拟杉,其他路由器自行搜索方法。
注意:這邊的外部端口(圖中8001)是noVNC頁面外網(wǎng)訪問時(shí)候需要填寫的端口量承,這邊的內(nèi)部端口(圖中8000)是路由轉(zhuǎn)發(fā)的端口搬设,即這個(gè)端口必須和websockify.js監(jiān)聽的端口一致,參考第二步撕捍,websockify.js監(jiān)聽轉(zhuǎn)發(fā)的端口也是8000拿穴。
4. 找到目標(biāo)服務(wù)器的公網(wǎng)IP并通過noVNC訪問
Extension:
1.多臺(tái)服務(wù)器可以在路由器轉(zhuǎn)發(fā)的時(shí)候設(shè)置不同的端口來進(jìn)行訪問。
2.realVNC tightVNC的服務(wù)器測試均不能通過noVNC訪問忧风,有一些詭異的報(bào)錯(cuò)默色。
3.現(xiàn)在的鏈接都是非加密的,加密的鏈接還沒嘗試狮腿。python服務(wù)器的通信加密在linux機(jī)器下測試可行腿宰。