一、背景
最近遇到客户需求,想要通过浏览器能访问到一台Windows服务器的桌面,其实这个情景在各大云服务器运营商都有提供的类似服务,对于一些远程临时运维工作非常方便,但是在本地服务器实现之前还没搞过,流程我重新整理了一下。
二、VNC简介
VNC (Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和MAC中的任何远程控制软件媲美。
VNC基本上是由两部分组成:一部分是客户端的应用程序(vnc viewer);另外一部分是服务器端的应用程序(vnc server)。VNC的基本运行原理和一些Windows下的远程控制软件很相像。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形界面十分友好。在任何安装了客户端的应用程序(vncviewer)的Linux平台的计算机都能十分方便地和安装了服务器端的应用程序(vncserver)的计算机相互连接。
Windows环境下的VNC Server、UltraVNC、TightVNC、TigerVNC等,要想网页访问桌面 还需要noVNC。noVNC提供一种在网页上通过html5的Canvas,访问机器上vncserver提供的vnc服务,需要做tcp到websocket的转化,才能在html5中显示出来。网页就是一个客户端,类似win下面的vncviewer,只是此时填的不是裸露的vnc服务的ip+port,而是由noVNC提供的websockets的代理,在noVNC代理服务器上要配置每个vnc服务,noVNC提供一个标识,去反向代理所配置的vnc服务。
三、准备
1、Windows服务器
2、安装包:UltraVNC、noVNC、node、websockify-js
(安装包已备好:https://pan.baidu.com/s/11MYFMQUTs1VP97PRfkET5Q 提取码:gp10)
四、操作流程
1、安装UltraVNC,一路下一步就行,安装完成后打开并配置
2、安装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目录
(其实也可以用websockify python 版本实现,有兴趣的可以了解下)
3、把noVNC.zip解压到node_modules目录下,再把websockify-master.zip解压到noVNC目录下。
4、设置下防火墙规则,开通入栈9000端口,截图中有步骤
5、执行websockify.js:转发9000端口的http链接到5900端口(UltraVNC Server的默认端口为5900)
C:\Users\Administrator> # 当前目录
node # 使用node启动js
c:\Users\Administrator\node_modules\websockify-js\websockify\websockify.js # js文件路径
--web c:\Users\Administrator\node_modules\noVNC # noVNC地址
9000 # 启动端口为9000
xxxxxxxx :5900 # 转发的VNC地址和端口,xxxxxx为服务器ip
6、在浏览器中输入服务器ip+端口即可访问,点击链接 ,输入第一步配置的密码
(有的服务器是内部网络,需要配置一下内网穿透,用花生壳就行)
注:如果不能访问 可以检查一下防火墙规则!