RustDesk远程桌面自建服务教程
本文最后更新于 2026年9月23日 下午
RustDesk 是一款著名的开源、跨平台远程桌面控制软件,被广泛视为 TeamViewer 和 AnyDesk 的最佳免费替代方案。它主要使用 Rust 语言编写,核心亮点在于支持端到端加密 P2P 连接与完全自主的服务器自建(Self-Hosting),让用户能 100% 掌控自己的数据安全
核心功能与特性
- 🌐 超强跨平台支持:全面覆盖 Windows、macOS、Linux、Android、iOS 和 Web 网页端。由于系统限制,iOS 设备仅支持投屏,无法作为被控端。
- 🔒 安全与自托管:提供免费的中继服务器程序,用户可在自己的 VPS 或本地 NAS(支持 Docker)上自建 RustDesk 中继服务器,彻底摆脱第三方 SaaS 平台的稳定性和隐私限制。
- 🚀 高效编解码:支持 H.264/H.265 硬件加速以及 VP8/VP9/AV1 软件编解码,即使在低带宽下也能通过调整画质和帧率来保证流畅度。
- 🛠️ 免安装与高级功能:在 Windows 系统上支持免管理员权限
为什么自建 RustDesk 服务端
| 自建服务端 | vs | 官方公共服务器 |
|---|---|---|
| 🚀 国内服务器,延迟 10-30ms | 海外节点,延迟 200ms+ | |
| 🔒 数据经过你自己的服务器 | 数据经过公共中继 | |
| 🆓 服务端开源,完全免费 | 免费但有速率限制 | |
| 👥 Web 后台统一管理设备 | 无管理面板 |
工作原理
两个核心组件:
- hbbs(ID 服务器):端口
21114-21116。负责设备注册、发现,提供 Web 后台和 API 服务 - hbbr(中继服务器):端口
21117-21119。P2P 直连失败时盲转发加密数据包
连接流程:
- 被控端启动 → 向 hbbs 注册(提交设备 ID 和网络信息)
- 控制端向 hbbs 查询目标设备 → 尝试 P2P 直连(低延迟)
- 直连失败(NAT 穿透失败)→ 双方通过 hbbr 中继转发,端到端加密,hbbr 无法解密
步骤 1:准备服务器
需一台有公网 IP 的 Linux 服务器:
2 核 2G
带宽建议 ≥ 5Mbps
步骤 2:安装 Docker
1 | |
访问 https://getdocker.quickso.cn
一键安装Docker
步骤 3:部署服务端
创建项目目录
1 | |
编写 docker-compose.yaml
1 | |
写入(将 <IP> 替换为服务器公网 IP或者你的域名):
1 | |
📝 关键变量说明:
变量 说明 ENCRYPTED_ONLY=1仅允许加密连接(强烈推荐保留) MUST_LOGIN=NN= 允许匿名连接;Y= 必须登录账户才能用
启动服务
1 | |
开放防火墙
| 端口 | 协议 | 用途 |
|---|---|---|
| 21114 | TCP | Web 后台 + API |
| 21115 | TCP | NAT 类型测试 |
| 21116 | TCP + UDP | ID 服务器 |
| 21117 | TCP | 中继服务器 |
| 21118 | TCP | WebSocket |
| 21119 | TCP | WebSocket |
云控制台:安全组 → 入方向 → 添加 TCP 21114-21119 + UDP 21116,来源 0.0.0.0/0。
服务器本地:
1 | |
步骤 4:获取 Key 和密码
Key(公钥)
所有客户端连接服务端的凭证,必须妥善保存:
1 | |
输出类似 OQd8dJxxxxxxxxxxxxxxxxxxxxxxx=,复制到安全位置备用。
管理员密码
1 | |
输出类似 Initial admin password: AbCd1234。此密码仅首次启动生成,建议立即登录后台修改。
步骤 5:后台管理
浏览器访问 http://你的服务器IP:21114。
- 用户名:
admin - 密码:上一步获取的随机密码
| 常用操作 | 路径 |
|---|---|
| 修改密码 | 系统 → 用户管理 → 点击 admin |
| 创建子账户 | 系统 → 用户管理 → 新建 |
| 查看/删除设备 | 系统 → 设备管理 |
💡 登录后立即修改默认密码,并为家人/同事创建独立子账户。
步骤 6:客户端配置(Windows\MacOS\Linux\安卓\iOS)
① 下载 RustDesk
https://github.com/rustdesk/rustdesk/releases/latest
选择 你的客户端版本。
② 网络设置(两端都需要)
- 打开 RustDesk → 左侧「网络」→ 右上角「解锁」
- 填写:
| 字段 | 内容 |
|---|---|
| ID 服务器 | 你的IP:21116 |
| 中继服务器 | 你的IP:21117 |
| API 服务器 | http://你的IP:21114 |
| Key | 粘贴 id_ed25519.pub 完整内容 |
- 点击「应用」
右上角可复制/粘贴配置,多设备快速部署。
③ 被控端设置
「安全」→ 解锁 → 密码 → 选择「使用固定密码」→ 设置强密码。
④ 账户登录(两端)
点击底部用户图标 → 用 admin 或子账户登录。登录后可在设备列表直接看到在线设备,双击连接。
⑤ 仅控制他人时
「常规」→ 服务 → 点击「停止」,避免自身成为被控端。
步骤 7:安全加固与维护
强制账户登录
编辑 docker-compose.yaml:
1 | |
重启:
1 | |
之后未登录用户无法使用,防止未授权接入。
定期备份
1 | |
更新服务端
1 | |
安全速查
| 措施 | 重要性 |
|---|---|
| 修改默认管理员密码 | 🔴 必须 |
| 启用 MUST_LOGIN=Y | 🟡 推荐 |
| 被控端使用强固定密码 | 🔴 必须 |
| 定期更新镜像 | 🟡 推荐 |
| 定期备份 data 目录 | 🟡 推荐 |
在 RemoteDesk 中使用
配置自建服务器
在 RemoteDesk 的 RustDesk 设置中填写:
| 字段 | 内容 |
|---|---|
| ID 服务器 | 你的IP:21116 |
| 中继服务器 | 你的IP:21117 |
| API 服务器 | http://你的IP:21114 |
| Key | id_ed25519.pub 内容 |
添加主机
| 字段 | 填写 |
|---|---|
| 主机名称 | 我的 Windows |
| 协议 | RustDesk |
| 地址 | 目标设备 RustDesk ID(客户端首页 9 位数字) |
| 密码 | 被控端固定密码 |
常见问题排查
Q: 客户端显示「未连接到服务器」?
→ ① 确认云安全组已开放全部 7 个端口(TCP 21114-21119 + UDP 21116)
→ ② 确认 Key 完整粘贴,无多余空格换行
→ ③ 确认 ID 服务器格式为 IP:21116(不带 http://)
→ ④ docker compose ps 确认容器状态为 Up
Q: 连接上了但非常卡?
→ P2P 直连失败,走了中继转发。优化:确保安全组开放 UDP 21116(打洞依赖),临时关闭 Windows 防火墙测试,升级服务器带宽。
Q: Web 后台 502 / 无法访问?
→ docker compose ps 确认运行中 → 安全组确认 TCP 21114 开放 → 浏览器用 http:// 而非 https://
Q: 如何查看当前连接状态?
→ docker compose logs --tail=50 查看实时日志。