🚀 搭建 RustDesk Server:打造属于自己的远程控制系统,替代 TeamViewer 和 ToDesk!

前言

在远程办公、技术支持、家庭协助等场景中,TeamViewer、ToDesk 等远程控制工具广受欢迎。但你是否也遇到过这些困扰:

  • 免费版限制越来越多?
  • 商业用途风险被封?
  • 数据中转经过第三方,安全性存疑?
  • 卡顿延迟

这里我们介绍一款开源、安全、免费的远程控制系统 ------ RustDesk ,只需要有一个公网 ip,就可以搭建自己的 RustDesk Server,完全替代传统远控工具!

为什么选择 RustDesk?

RustDesk 是一款用 Rust 开发的开源远程桌面工具,功能类似于 TeamViewer / ToDesk,但具有以下优势:

  • 自建服务器,数据全程私有化传输
  • 完全免费,无商业限制
  • ✅ 支持 Windows、macOS、Linux、Android、iOS 多平台
  • ✅ 支持文件传输、剪贴板共享、多窗口等丰富功能
  • ✅ 开源透明,安全可控

RustDesk

RustDesk github 地址:github.com/rustdesk/ru...

RustDesk server 如何工作?

安装好的 Rustdesk server 有两个可执行程序 hbbs 和 hbbr。

  • hbbs - RustDesk ID (rendezvous / signaling) server,监听 TCP(21114 - 仅适用于 Pro 中的 http,21115、21116、21118 用于 Websocket)和 UDP (21116)
  • hbbr - RustDesk 中继服务器,监听 TCP(21117、21119 用于 Web 套接字)

以下是 RustDesk 客户端如何与 hbbr / hbbs 通信流程图: github.com/rustdesk/ru...

只要 RustDesk 在机器上运行,机器就会不断 ping ID 服务器(hbbs)以使其当前的 IP 地址和端口为人所知。

当您启动从计算机 A 到计算机 B 的连接时,计算机 A 会联系 ID 服务器并请求与计算机 B 通信。

然后,ID 服务器尝试使用 hole punching 将 A 和 B 直接相互连接。

如果 hole punching 失败,A 将通过中继服务器(hbbr)与 B 通信。

在大多数情况下,hole punching 是成功的,并且从不使用中继服务器。

RustDesk server 安装

我们需要有一台有公网 ip 的云主机,推荐使用 Linux 系统。

可以使用官方的一键安装脚本也可以使用 docker 安装。

一键安装

bash 复制代码
wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh

安装成功后会在终端输出你的 rustdesk server IP/DNS 和 public key ,这两个需要配置到 RustDesk Client. 另外如果忘记 public key, 可以在/opt/rustdesk 目录查找以 .pub后缀的文件。

Docker compose 安装

创建配置目录

bash 复制代码
mkdir -pv  /data/rustdesk-server

创建 docker-compose.yaml

yaml 复制代码
networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116 # 自定义 hbbs 映射端口
      - 21116:21116/udp # 自定义 hbbs 映射端口
    image: rustdesk/rustdesk-server
    command: hbbs
    volumes:
      - $PWD/hbbs:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117 # 自定义 hbbr 映射端口
    image: rustdesk/rustdesk-server
    command: hbbr
    volumes:
      - $PWD/hbbr:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    restart: unless-stopped

启动服务

复制代码
docker-compose up -d

验证 hbbs,hbbr 容器是否正常运行

复制代码
docker ps

hbbs 容器第一次启动,会自动生成相关 key 文件在容器的/root 目录,你可在相应的挂载目录查看 public key 内容。

公有云安全组端口放行说明

在搭建 RustDesk Server 时,务必在对应云主机的控制台 安全组 中放行以下端口,以确保服务正常运行:

hbbs 服务所需端口

端口号 协议 说明
21114 TCP 用于 Web 控制台(仅专业版 Pro 可用)
21115 TCP 用于 NAT 类型测试
21116 TCP / UDP 必须同时启用 TCP 和 UDP,用于 ID 注册、心跳服务(UDP)以及 TCP 打洞、连接服务(TCP)
21118 TCP 用于支持 Web 客户端(可选)

hbbr 服务所需端口

端口号 协议 说明
21117 TCP 用于中继服务
21119 TCP 用于支持 Web 客户端(可选)

注意 :如果你不使用 Web 客户端功能,可以关闭 21118 和 21119 两个端口。

⚠️ 重点:21116 必须同时放行 TCP 和 UDP 协议!

另外云上的云主机默认镜像是不会启用系统防火墙,如果开启 iptables, firewalld 或者 ufw,记得也要放行。

Rustdesk 客户端安装配置

下载对应客户端安装包,安装运行后,RustDesk 客户端界面如下。

在你的 ID 右上角点击设置,选择网络。

点击解锁网络设置,输入密码验证成功后,然后点击 ID/中继服务器。填写两项:

  • ID 服务器:云服务公网 ip
  • Key:hbbs/id_ed25119.pub 内容

主控端和被控端的 ID/中继服务器都需要一样的配置。

连接测试

在主控端输入被控端的 ID 和一次性密码,也可以在被控端配置设置固定密码和 2FA。

我使用的云服务器是阿里云 2C2G 3M 带宽配置的 ECS,RustDesk 显示 Delay 平均在 30 ms 以下,体验非常好。比之前使用的 TeamViewer、ToDesk 好太多了。

相关推荐
袁煦丞2 天前
AI直接出答案!Perplexica开源搜索引擎:cpolar内网穿透实验室第534个成功挑战
前端·程序员·远程工作
袁煦丞12 天前
Gopeed让你局域网外也能当下载皇帝:cpolar内网穿透实验室第475个成功挑战
远程工作
袁煦丞13 天前
AI音乐本地秒生成MusicGPT:cpolar内网穿透实验室第477号成功挑战
前端·程序员·远程工作
袁煦丞16 天前
Moments你的专属无广告树洞:cpolar内网穿透实验室第521个成功挑战
前端·程序员·远程工作
袁煦丞17 天前
AI配音情感魔术师ChatTTS: cpolar内网穿透实验室第414个成功挑战
前端·程序员·远程工作
袁煦丞20 天前
在线PPT编辑利器PPTist:cpolar内网穿透实验室第650个成功挑战
前端·程序员·远程工作
搬码临时工23 天前
如何开启自己计算机远程桌面连接功能? 给别人或异地访问
运维·服务器·网络·远程工作
袁煦丞23 天前
拯救你的碎片时光【4K电影自动投喂+全球追剧】NAS玩家新宠Nastool:cpolar内网穿透实验室第620个成功挑战
前端·程序员·远程工作
袁煦丞24 天前
全自动SSL证书+暗黑模式适配 +VanBlog博客系统,3步搭建全球可见个人站:cpolar内网穿透第619个成功挑战
前端·程序员·远程工作
AirDroid_cn25 天前
打开网页即可远程控制手机,Linux系统亦可使用
linux·智能手机·安卓·远程工作·远程控制·远程控制手机·远程投屏