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

相关推荐
袁煦丞11 小时前
【跨平台抓取音乐秒变MP3】PlaylistDL破解下载自由:cpolar内网穿透实验室第501个成功挑战
前端·程序员·远程工作
搬码临时工11 小时前
公网ip怎么申请和使用?本地只有内网IP如何提供外网访问?
运维·服务器·网络·tcp/ip·电脑·远程工作
搬码临时工17 小时前
有公网ip但外网访问不到怎么办?内网IP端口映射公网连接常见问题和原因
运维·服务器·网络·网络协议·tcp/ip·php·远程工作
袁煦丞2 天前
MAZANOKE照片瘦身超级管家:cpolar内网穿透实验室第544个成功挑战
前端·程序员·远程工作
搬码临时工2 天前
如何将内网的IP地址映射到外网?详细方法与步骤解析
服务器·网络·tcp/ip·智能路由器·电脑·远程工作
袁煦丞2 天前
远程监控3D打印机的利器OctoPrint:cpolar内网穿透实验室第615个成功挑战
前端·程序员·远程工作
江苏泊苏系统集成有限公司4 天前
半导体晶圆制造洁净厂房的微振控制方案-江苏泊苏系统集成有限公司
人工智能·深度学习·目标检测·机器学习·创业创新·制造·远程工作
袁煦丞5 天前
你的在线相册管理专家Piwigo:cpolar内网穿透实验室第487个成功挑战
前端·程序员·远程工作
浮生小二8 天前
程序员出海之英语-使用手册
程序人生·职场和发展·创业创新·学习方法·远程工作·程序员创富