远程控制家里的电脑帮父母修个软件、在外临时调一下公司工位上的程序、或者平板连上宿舍那台台式机跑点东西——这些场景你八成都遇到过。TeamViewer 越来越爱弹“商业用途”警告,向日葵免费版高峰期卡成幻灯片。RustDesk 是开源免费的远程桌面工具,最关键的是它支持自建中继服务器(hbbs/hbbr):把中转节点放在自己的云服务器上,速度不依赖官方公共服务器,连接数据也只经过你自己的机器,隐私更放心。本文用一台雨云 KVM 云服务器,Docker 一把梭把中继搭起来,每一步命令都能直接抄。
一、先准备一台雨云 KVM 云服务器
自建中继对配置要求不高,1 核 1G 都能跑,但中继要长期在线、带宽决定连接流畅度,所以挑一台网络稳、线路近的机器更省心。想低成本试水可以看一类国产高性价比云服务器,比如雨云:它家是 KVM 虚拟化的云服务器,Debian、Ubuntu 镜像任选,新用户用优惠码 admin01 享五折,入门版折后约 9 元/月,还支持 7 天无理由退款,拿来做中继试错成本很低。如果你还在挑机器,可以先看这篇 VPS 怎么选不踩坑 把参数搞明白,再看 新手买 VPS 先看这几个配置参数 决定配置。
我一般选 Debian 12 最小化镜像,干净、源全。系统装好后先按 VPS 到手第一件事做什么 做基础安全(建普通用户、改 SSH 端口、开 ufw),本文默认你已经搞定。中继要开放的端口在第二步列清楚。
二、RustDesk 中继用到哪些端口
RustDesk 的中继由两部分组成:hbbs(ID/注册服务器,负责设备握手与分配)和 hbbr(中继服务器,负责实际转发画面和键鼠数据)。它们需要以下端口:
| 协议 | 端口 | 用途 |
|---|---|---|
| TCP | 21115 | hbbs 供 NAT 类型测试 |
| TCP | 21116 | hbbs 主要 TCP 端口 |
| UDP | 21116 | hbbs 主要 UDP 端口(打洞用) |
| TCP | 21117 | hbbr 中继端口 |
| TCP | 21118 | 网页客户端(Web Client) |
| TCP | 21119 | 网页客户端(Web Client) |
放行命令(ufw 已启用的情况下):
ufw allow 21115:21119/tcp
ufw allow 21116/udp
ufw reload
如果你的云厂商还有“安全组”,记得在控制台同样放行这一批端口,否则外面连不进来。
三、用 Docker 一键拉起 hbbs + hbbr
先装 Docker(Debian 12 推荐用官方脚本,避免源里版本旧):
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
建一个工作目录,把数据持久化到 volume,否则容器重建后设备 ID 和密钥就丢了:
mkdir -p /opt/rustdesk && cd /opt/rustdesk
写一份 docker-compose.yml:
version: "3"
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
command: hbbs
ports:
- "21115:21115"
- "21116:21116"
- "21116:21116/udp"
- "21118:21118"
- "21119:21119"
volumes:
- ./data:/root
restart: unless-stopped
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: hbbr
command: hbbr
ports:
- "21117:21117"
volumes:
- ./data:/root
restart: unless-stopped
启动:
docker compose up -d
docker logs hbbs 第一次启动会打印一对密钥(类似 Key: xxxxxxxx),把这个 Key 抄下来,客户端连中继时要填。它存在 ./data 里,容器重建也不丢,但第一次就记好最省事。
四、客户端填中继地址
在被控端和主控端的 RustDesk 里,点右上角“菜单 → 网络 ID/中继服务器”,填入:
- ID 服务器:
你的服务器IP(或域名):21116 - 中继服务器:
你的服务器IP/域名:21117 - Key:刚才抄下的那串
填好后两台设备都显示“就绪”,互相用设备 ID 就能连了。手机端在设置里同样位置填,逻辑一模一样。
五、踩过的坑与经验
- Key 不匹配连不上:客户端 Key 必须和 hbbs 启动时生成的完全一致。换过容器但
./data没挂载会重新生成 Key,导致旧客户端失效——所以 volume 一定要挂上。 - 只放行部分端口会“能握手不能传画面”:21116 是握手、21117 才是真正中继。只开 21116 会显示在线却黑屏,记得把第二节那一批全开。
- UDP 21116 别漏:打洞走 UDP,只开 TCP 在复杂网络下容易走服务器强制中转、变慢。
- 想用域名:把域名 A 记录指向服务器 IP,客户端填域名即可,以后换机器只改 DNS,不用挨个改客户端。
- 中继也要做基础防护:虽然 RustDesk 有 Key 鉴权,但别把 21115-21119 对全网任意 IP 长期暴露还用弱口令——配合 VPS 安全配置实战 的思路做一层限制更稳妥。
小结
自建 RustDesk 中继最大的好处就两点:连得稳(中转节点是你自己的,不挤官方公共服),数据只过自己机器(隐私可控)。配置本身不复杂,一份 docker-compose 加几个端口就完事,难点都在端口放行和 Key 对齐上。长期在线的中继推荐用雨云这种低价稳定的 KVM 机器——优惠码 admin01 五折、7 天无理由退款,跑中继这类常驻小服务很合适。
合规提醒:使用雨云及本文所述方案时,请遵守《网络安全法》《个人信息保护法》《数据安全法》等相关法律法规,仅用于合法合规的远程协助、开发调试等用途,不得用于任何违法违规活动;远程控制他人设备须获得设备所有者明确授权。






