首页 友人帐 关于我

纯WEB可访问的VNC

2022-02-22

在windows上部署的,仅在网页上就可以访问的加密VNC服务


在某些环境下(例如咱读的学校),可能RDP不可用,或者根本没有RDP客户端 比如某些只有浏览器的设备
这时候一个仅在web页面就可以使用远程桌面就特别的耐斯awa

传统的vnc客户端和服务端之间除了密码之外都是明文传输(存在被偷窥的风险),而基于web的优势就是,可以全程套上ssl,加密数据


这篇博客咱使用tightvncnovnc在一个windows服务器上部署

首先,web端的vnc客户端由novnc提供,这是一个纯前端的项目,部署它你可以随意找一个可以托管静态资源的地方,或者使用官方的在线版本(没有科学上网的话,加载速度可能比较感人)

如你所料,novnc无法,也不可能建立TCP连接,它只能建立websocket连接,所以无法直接连接传统的,基于TCP的VNC服务端。
所以,我们需要一个转发程序,将websocket转换为TCP连接。
某些VNC服务端原生支持websocket连接,但是tightvnc应该是没有这个功能的…
所以咱们使用novnc的姊妹项目——websockify


安装tightvnc

  1. 双击安装包,下一步,下一步,下一步……

如果没有特殊需要,咱还是推荐在安装的时候取消勾选注册为服务
primary passwd,即VNC登入密码务必设置,否则你的VNC将会裸奔(
2. 安装完成后,任务栏将会显示图标,右键图标–>configuration,打开控制面板
Access Control选项卡中,右下角勾选Allow loopback connections,允许本地连接
如果你没有特殊需要,为了安全性也推荐勾选Allow only loopback connections,仅允许本地连接
因为咱们要使用websocket反代连接,所以所有的连接都会被视为从本地访问,所以……


安装websockify

websockify的原生语言是python,其他语言的实现都或多或少没有原生的维护频繁,所以咱们就使用python版。

  1. 首先,我们需要一个可以用的python环境,这里咱使用嵌入式的python
  2. 如websockify的readme中所说,它需要numpy库来获得更好的性能,在python环境中执行pip install numpy
    如果想简单一点,或者不需要这个库,也可以去setup.py里把install_requires=['numpy']这行删掉。
  3. 在python环境中执行python setup.py install
  4. 如果没有出什么差错,现在随便可以在cmd中执行websockify命令了。

注意:这个安装如你所料,无法绿色运行,即你执行安装命令后,就不能再移动你的python安装文件夹位置了

准备证书和密钥文件(可选)

如果需要基于ssl的加密连接,那么你需要一个证书文件和一个密钥文件,就和配置一个https站点一样(对,这必须要有一个域名)


在web中访问

如果一切没有差错,现在咱们应该已经一切准备就绪,只差最后一步
打开novnc网页,在url中加入参数hostport,代表websockify所监听的地址
例如https://example.com/vnc.html?host=test.smyhw.online&port=25565


其他注意事项





知识共享许可协议
本作品采用知识共享署名 4.0 国际许可协议进行许可。