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

相关推荐
田里的水稻8 天前
OE_ubuntu24.04如何安装FileZilla文件传输助手
经验分享·远程工作
hqyjzsb13 天前
非技术管理层推动企业AI转型的系统化实施策略
人工智能·跳槽·创业创新·学习方法·业界资讯·远程工作·程序员创富
猫头虎20 天前
【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版
docker·npm·开源·aigc·ai编程·远程工作·openclaw
LeoZY_21 天前
开源项目精选: lazygit —— 告别繁琐命令,终端里玩转可视化Git
git·stm32·单片机·mcu·开源·远程工作·gitcode
hqyjzsb22 天前
亲历AI浪潮5年:技术更新快,但掌握底层逻辑永远有价值
人工智能·程序人生·职场和发展·创业创新·学习方法·业界资讯·远程工作
不做菜鸟的网工22 天前
Ubuntu24.04 OpenVPN 部署完整指南
远程工作
玄同76524 天前
Git常用命令指南
大数据·git·elasticsearch·gitee·github·团队开发·远程工作
袁煦丞 cpolar内网穿透实验室25 天前
精准模拟各种弱网场景!树莓派+ATC打造便携弱网网关。cpolar 内网穿透实验室第781个成功挑战
远程工作·树莓派·内网穿透·cpolar·弱网网关
袁煦丞 cpolar内网穿透实验室25 天前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar
hqyjzsb25 天前
盲目用AI提效?当心陷入“工具奴”陷阱,效率不增反降
人工智能·学习·职场和发展·创业创新·学习方法·业界资讯·远程工作