远程桌面中转,基于 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 互相远程。

rustdesk 局域网 rustdesk局域网手机_运维

搭建 UltraVNC Repeater 中继器服务器

     可以根据服务器环境选择在 windows 上或者 linux 上面搭建,UltraVNC 官网只有 windows 端的源代码和可执行程序,本文提供 centos 版本的源代码,下面介绍。

windows 端搭建

  1. 下载可执行文件 ultravncrepeater1400
  2. 直接运行即可
    中继器服务器 ip:运行 repeater 的服务器地址
    中继器 UltraVNC Viewer 监听端口:

名称

描述

中继器服务器 ip

运行 repeater 的服务器地址

中继器 UltraVNC Server 监听端口

5500

中继器 UltraVNC Viewer 监听端口

5901

WEB 端管理页面

浏览器中直接访问中继器 ip 地址,端口默认 80

centos 端搭建

    csdn 上传的资源默认 5 个积分,后来会自动增长,我修改后发现没有用

  1. 下载 uvncrepeater 源代码
    csdn: uvncrep017-ws.tar.gz
2. 解压源代码文件
tar -xvf uvncrep017-ws.tar
  1. 编译并安装
cd uvncrep017-ws

make & make install
  1. 为中继器服务添加一个用户
useradd uvncrep
  1. 根据需要编辑配置文件 /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
  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