在windows上部署的,仅在网页上就可以访问的加密VNC服务
在某些环境下(例如咱读的学校),可能RDP不可用,或者根本没有RDP客户端 比如某些只有浏览器的设备
这时候一个仅在web页面就可以使用远程桌面就特别的耐斯awa
传统的vnc客户端和服务端之间除了密码之外都是明文传输(存在被偷窥的风险),而基于web的优势就是,可以全程套上ssl,加密数据
这篇博客咱使用tightvnc和novnc在一个windows服务器上部署
首先,web端的vnc客户端由novnc提供,这是一个纯前端的项目,部署它你可以随意找一个可以托管静态资源的地方,或者使用官方的在线版本(没有科学上网的话,加载速度可能比较感人)
如你所料,novnc无法,也不可能建立TCP连接,它只能建立websocket连接,所以无法直接连接传统的,基于TCP的VNC服务端。
所以,我们需要一个转发程序,将websocket转换为TCP连接。
某些VNC服务端原生支持websocket连接,但是tightvnc应该是没有这个功能的…
所以咱们使用novnc的姊妹项目——websockify
primary passwd
,即VNC登入密码务必设置,否则你的VNC将会裸奔( Access Control
选项卡中,右下角勾选Allow loopback connections
,允许本地连接Allow only loopback connections
,仅允许本地连接websockify的原生语言是python,其他语言的实现都或多或少没有原生的维护频繁,所以咱们就使用python版。
pip install numpy
install_requires=['numpy']
这行删掉。 python setup.py install
websockify
命令了。如果需要基于ssl的加密连接,那么你需要一个证书文件和一个密钥文件,就和配置一个https站点一样(对,这必须要有一个域名)
--cert=<路径>
来指定证书文件路径(默认为当前目录下的self.pem)--key=<路径>
来指定密钥文件路径--ssl-only
websockify <监听地址>:<端口> <vnc地址>:<端口>
websockify 0.0.0.0:5901 127.0.0.1:5900
websockify 0.0.0.0:5901 127.0.0.1:5900 --key t.key --ssl-only
如果一切没有差错,现在咱们应该已经一切准备就绪,只差最后一步
打开novnc网页,在url中加入参数host
和port
,代表websockify所监听的地址
例如https://example.com/vnc.html?host=test.smyhw.online&port=25565
因为VNC是屏幕捕捉,所以使用VNC至少需要一个可以输出的显示设备/会话
如果你的VNC打开黑屏的话,大概率就是这个原因。
如果是阿里腾讯这类云服务器,那么可以在服务器里开一个应急连接,他们的应急连接也是VNC,但是会在更底层模拟一个显示设备
或者,RDP也算作一个会话,所以也可以被VNC捕捉
如果novnc通过https加载,那么websocket也必须配置ssl,否则浏览器会拒绝连接
novnc的主页是vnc.html,并不是index.html