远程桌面中转,基于 UltraVNC Repeater(中继器)的远程桌面服务搭建
- 概述
- 搭建 UltraVNC Repeater 中继器服务器
- windows 端搭建
- centos 端搭建
- 客户端安装 UltraVNC Server 和 UltraVNC Viewer
- 启动 UltraVNC Server
- 启动 UltraVNC Viewer
- 用 Java 代码调用 Ultra VNC
- 有兴趣可以搭建 Apache Guacamole 服务器,可以在 WEB 端访问远程桌面,支持 ssh、vnc、rdp、telnet。
- 其他
概述
常见的远程桌面服务,大多数是点对点的,需要控制端和被控制端双方互相能够连通,若不在同一个局域网内,仅仅通过内网 ip 地址和端口,是不能直接远程桌面的,所以需要一个服务器来中转双方的数据,这样只要大家能够连通服务器,那么任意两台 PC 都可以互相远程桌面。市面上出现的 TeamViewer 和向日葵,原理应该也是这样的。本文讲解如何使用 UltraVNC 搭建远程桌面服务器,并介绍如何用 Java 代码调用。
如下图所示:两个不同的局域网A、B,PC1、2、3无法直接 ping PC4、5、6,但是全部都能连通 Server(中继器服务),那么任意两台机器都可以用 UltraVNC 互相远程。
搭建 UltraVNC Repeater 中继器服务器
可以根据服务器环境选择在 windows 上或者 linux 上面搭建,UltraVNC 官网只有 windows 端的源代码和可执行程序,本文提供 centos 版本的源代码,下面介绍。
windows 端搭建
- 下载可执行文件 ultravncrepeater1400
- 直接运行即可
中继器服务器 ip:运行 repeater 的服务器地址
中继器 UltraVNC Viewer 监听端口:
名称 | 描述 |
中继器服务器 ip | 运行 repeater 的服务器地址 |
中继器 UltraVNC Server 监听端口 | 5500 |
中继器 UltraVNC Viewer 监听端口 | 5901 |
WEB 端管理页面 | 浏览器中直接访问中继器 ip 地址,端口默认 80 |
centos 端搭建
csdn 上传的资源默认 5 个积分,后来会自动增长,我修改后发现没有用
- 下载 uvncrepeater 源代码
csdn: uvncrep017-ws.tar.gz
2. 解压源代码文件
tar -xvf uvncrep017-ws.tar
- 编译并安装
cd uvncrep017-ws
make & make install
- 为中继器服务添加一个用户
useradd uvncrep
- 根据需要编辑配置文件 /etc/uvnc/uvncrepeater.ini ,默认如下
viewerport = 5901
maxsessions = 10
runasuser = uvncrep
logginglevel = 2
srvListAllow1 = 192.168.0.0 ;Allow network 192.168.x.x
srvListDeny0 = 127.0.0.1 ;Deny loopback
requirelistedserver=1
- 启动服务
/etc/init.d/uvncrepeater start
客户端安装 UltraVNC Server 和 UltraVNC Viewer
UltraVNC 下载地址,若地址失效,可去官网下载
名称 | 描述 |
winvnc.exe | UltraVNC Server 程序 |
vncviewer.exe | UltraVNC Viewer 程序 |
启动 UltraVNC Server
打开 cmd 命令行,切换到软件根目录,执行
// 命令行参数如下
// id number: 被控制端编号(只能是数字,唯一,且至少三位,即最小是 100,最大是 2147483647,源码中此为 int 类型)
// ip: repeater 中继器服务器 IP
// port: 中继器 UltraVNC Server 监听端口
winvnc.exe -autoreconnect ID:[id number]-connect [repeater ip]:[server listen port] -run
// 示例如下
winvnc.exe -autoreconnect ID:10001 -connect 192.168.1.2:5500 -run
启动 UltraVNC Viewer
打开 cmd 命令行,切换到软件根目录,执行
// 命令行参数如下
// id number: 被控制端编号(只能是数字,唯一,且至少三位,即最小是 100,最大是 2147483647,源码中此为 int 类型)
// ip: repeater 中继器服务器 IP
// port: 中继器 UltraVNC Viewer 监听端口
vncviewer.exe -proxy [repeater ip]:[viewer listen port] ID:[id number]
// 示例如下
vncviewer.exe -proxy 192.168.1.2:5901 ID:10001
用 Java 代码调用 Ultra VNC
在 Java 程序里执行 cmd 命令,达到调用的效果,源码请参考 github: ultravnc-call
https://github.com/tudan110/ultravnc-call
Runtime.getRuntime ().exec (command);
有兴趣可以搭建 Apache Guacamole 服务器,可以在 WEB 端访问远程桌面,支持 ssh、vnc、rdp、telnet。
其他
最近看到一个关于远程桌面的项目
https://github.com/rustdesk/rustdesk