🚀 搭建 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 好太多了。

相关推荐
路由侠内网穿透.7 小时前
本地部署开源的网盘聚合工具 OpenList 并实现外部访问
服务器·网络协议·信息可视化·开源·远程工作
JoyCong19982 天前
如何使用手机远程控制另外的手机?可靠的ToDesk安卓被控功能操作教程
安全·智能手机·远程工作·远程操作
袁煦丞 cpolar内网穿透实验室6 天前
node_exporter无需公网 IP 也能远程监控服务器!cpolar内网穿透实验室第 583 个成功挑战
服务器·网络协议·tcp/ip·远程工作·内网穿透·cpolar
袁煦丞 cpolar内网穿透实验室6 天前
Grafana突破局域网限制,随时随地访问数据看板! cpolar内网穿透实验室第 515 个成功挑战
grafana·远程工作·内网穿透·cpolar·随时访问
路由侠内网穿透.8 天前
本地部署问答社区 Apache Anwser 并实现外部访问
服务器·windows·网络协议·apache·远程工作
Splashtop高性能远程控制软件9 天前
远程办公防线不 “失守”,终端防护策略全解析
大数据·运维·网络·网络安全·远程工作·远程控制·splashtop
袁煦丞 cpolar内网穿透实验室10 天前
12.1周一 Postgresql无需公网 IP 也能远程连数据库?cpolar 内网穿透实验室第 402 个成功挑战
数据库·tcp/ip·postgresql·远程工作·内网穿透·cpolar
该用户已不存在15 天前
2025 年 8 款最佳远程协作工具
前端·后端·远程工作
路由侠内网穿透.20 天前
外部访问 Python 搭建的 HTTP 服务器
运维·服务器·网络·网络协议·http·远程工作
爱吃烤鸡翅的酸菜鱼25 天前
网易UU远程全功能技术解构:游戏级性能突围与安全边界探析
安全·游戏·远程工作·uu加速器