一、RustDesk介绍
RustDesk是一款开源且免费的远程桌面控制软件,旨在为用户提供快速、安全、便捷的远程访问体验。它支持多种操作系统,包括Windows、macOS、Linux、Android和iOS,满足不同设备间的远程控制需求。
主要特性:
-
开源免费:RustDesk完全开源,个人和商业用户均可免费使用,无需担心隐藏费用。
-
端到端加密:采用端到端加密技术,确保数据在传输过程中的安全性,保护用户隐私。
-
跨平台支持:兼容Windows、macOS、Linux、Android和iOS等多种操作系统,提供广泛的设备支持。
-
文件传输:内置文件传输功能,方便用户在远程设备间交换文件。
-
自建服务器:支持用户自行搭建中继服务器,提升连接速度和稳定性,并完全掌控数据,增强安全性。
-
多显示器支持:能够处理多显示器配置,适应复杂的工作环境。
-
会话录制:提供远程会话录制功能,便于培训和文档记录。
自建服务器的优势:
RustDesk允许用户自建中继服务器,实现数据主权和增强的安全性。通过自托管,用户可以根据自身需求定制客户端,确保数据在本地环境中传输,避免第三方服务器的潜在风险。
使用场景:
RustDesk适用于远程办公、在线教育、技术支持等多种场景。其高性能和稳定性使其在处理复杂任务时依然保持流畅,满足用户的多样化需求。
总结:
RustDesk作为一款开源免费的远程桌面控制软件,凭借其强大的功能和高安全性,成为TeamViewer、AnyDesk等商业软件的有力替代品。无论是个人用户还是企业用户,都可以通过RustDesk实现高效、安全的远程控制和管理。
二、自建中继服务器
自建 RustDesk 的中继服务器可以完全控制远程连接的数据传输过程,提高安全性和连接性能,特别适合企业内网或对隐私有高要求的场景。RustDesk 使用两个主要组件:
-
hbbs(RustDesk Server)→ 信令服务器(用于注册、打洞、穿透 NAT 等)
-
hbbr(RustDesk Relay)→ 中继服务器(用于转发无法直连的流量)
1、自建服务器的前提
-
一台公网服务器(推荐 Linux,带固定 IP 或域名)
-
开放如下端口:
-
TCP:21115(hbbs)、21116(hbbr)、21118(用于Web UI,可选)
-
UDP:21116(用于中继穿透)
-
-
安装好 Docker(推荐)
2、使用 Docker 快速部署
这是推荐方式,简单易管理。
1. 创建 Docker 网络和目录
docker network create rustdesk-net
mkdir -p ~/rustdesk-server
cd ~/rustdesk-server
2. 创建 Docker Compose 文件
docker-compose.yml
内容如下:
version: '3'
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
restart: unless-stopped
network_mode: host
command: hbbs -r <your-server-ip>:21117
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: hbbr
restart: unless-stopped
network_mode: host
command: hbbr
❗ 替换
<your-server-ip>
为你服务器的公网 IP。
3. 启动服务器
docker-compose up -d
可以通过查看日志确认服务是否启动成功:
docker logs -f hbbs
docker logs -f hbbr
3、客户端如何连接自建服务器
在 RustDesk 客户端中设置:
-
打开「设置」 → 「ID/中继服务器」手动设置:
-
中继服务器地址 =
你的服务器IP或域名
-
中继服务器端口 =
21115
-
中继 NAT 端口 =
21116
-
三、 完整的一键部署脚本
完整的一键部署脚本,支持以下功能:
1、功能列表
-
自动安装 Docker 和 Docker Compose
-
自动部署 RustDesk 中继服务器(
hbbs
+hbbr
) -
支持自定义端口(可配置)
-
自动申请 TLS 证书(使用 Caddy + Let's Encrypt)
-
支持反向代理、自动续期 TLS
-
可选自建客户端构建支持(稍后单独提供)
2、RustDesk 一键部署脚本(含 TLS)
1.使用说明:
-
你的服务器必须绑定域名(用于申请 TLS 证书)
-
域名需要已解析到服务器公网 IP(A 记录)
2.安装脚本:install_rustdesk_tls.sh
#!/bin/bash
set -e
# === 配置项(请根据你的情况修改) ===
DOMAIN="your.domain.com" # 绑定的域名
RELAY_PORT=21117 # 中继端口(客户端连接此端口)
WORK_DIR="/opt/rustdesk-server" # 安装目录
echo ">>> 安装 Docker 和 Docker Compose..."
apt update && apt install -y docker.io docker-compose
echo ">>> 创建工作目录..."
mkdir -p $WORK_DIR && cd $WORK_DIR
echo ">>> 创建 docker-compose.yml..."
cat > docker-compose.yml <<EOF
version: '3'
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "${RELAY_PORT}:${RELAY_PORT}"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
restart: unless-stopped
network_mode: "service:caddy"
command: hbbs -r 127.0.0.1:${RELAY_PORT} --relay tls://${DOMAIN}:${RELAY_PORT}
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: hbbr
restart: unless-stopped
network_mode: "service:caddy"
command: hbbr
volumes:
caddy_data:
caddy_config:
EOF
echo ">>> 创建 Caddyfile..."
cat > Caddyfile <<EOF
${DOMAIN}:${RELAY_PORT} {
reverse_proxy 127.0.0.1:${RELAY_PORT}
tls {
protocols tls1.2 tls1.3
}
}
EOF
echo ">>> 启动服务..."
docker-compose up -d
echo "✅ RustDesk Server 已部署成功!"
echo "🌐 请在客户端设置中填入以下信息:"
echo "-----------------------------------"
echo "中继服务器地址: ${DOMAIN}"
echo "端口: ${RELAY_PORT}"
echo "使用 TLS: ✅"
echo "-----------------------------------"
3.使用方法:
-
修改脚本中的
DOMAIN
为你自己的域名。 -
上传并运行:
chmod +x install_rustdesk_tls.sh
./install_rustdesk_tls.sh
四、定制RustDesk Windows 客户端
1、功能列表
-
✅ 内嵌你自建的中继服务器地址(
hbbs
和hbbr
) -
✅ 内嵌默认远程访问密码(受控端自动启用)
-
✅ 可替换 Logo 和 UI 文案(可选)
-
✅ 打包为
.exe
安装包(便于企业部署)
2、自建客户端构建流程(Windows)
1. 环境准备(Windows 或 Linux 构建)
建议使用 Linux 或 WSL 构建(Windows 构建需装 Visual Studio 全家桶)
# 安装构建依赖(以 Ubuntu 为例)
sudo apt update
sudo apt install -y git build-essential cmake curl mingw-w64
# 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup target add x86_64-pc-windows-gnu
2. 克隆 RustDesk 项目
git clone https://github.com/rustdesk/rustdesk.git
cd rustdesk
3. 修改默认配置
修改文件:src\conf.rs
// 设置默认服务器地址(你的服务器域名或 IP)
pub const DEFAULT_HBBS: &str = "your.domain.com:21115";
pub const DEFAULT_HBBR: &str = "your.domain.com:21116";
// 设置默认远程访问密码
pub const DEFAULT_PASSWORD: &str = "yourpassword";
4. 编译 Windows 可执行文件
cargo build --release --target x86_64-pc-windows-gnu
编译完成后生成:
target/x86_64-pc-windows-gnu/release/rustdesk.exe
3、可选:自定义 Logo 和 UI 文案
可以:
-
替换
assets/icons
中的图标 -
修改
src/lang
下的多语言字符串 -
修改 UI 风格(RustDesk 基于
fltk
)
5、建议开启双重认证
开启之后效果
五、自动化脚本
自动化脚本可一键生成 docker-compose.yml
文件,并根据你输入的参数自动设置:
1、功能特点:
-
支持是否启用 TLS(true/false)
-
自动配置服务器地址、端口
-
自动生成
docker-compose.yml
文件和可选的Caddyfile
-
支持数据持久化(
./data
挂载到容器) -
支持默认启动命令和端口映射
2、脚本名:generate_rustdesk_compose.sh
#!/bin/bash
set -e
echo "=== RustDesk docker-compose 自动生成工具 ==="
read -p "请输入你的服务器域名或公网IP: " DOMAIN
read -p "是否启用TLS? (yes/no): " USE_TLS
WORKDIR="./rustdesk-server"
mkdir -p $WORKDIR && cd $WORKDIR
cat > docker-compose.yml <<EOF
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
restart: unless-stopped
depends_on:
- hbbr
networks:
- rustdesk-net
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
volumes:
- ./data:/root
EOF
if [[ "$USE_TLS" == "yes" ]]; then
echo " command: hbbs -r 127.0.0.1:21117 --relay tls://${DOMAIN}:443" >> docker-compose.yml
else
echo " command: hbbs -r ${DOMAIN}:21117" >> docker-compose.yml
fi
cat >> docker-compose.yml <<EOF
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
restart: unless-stopped
networks:
- rustdesk-net
ports:
- 21117:21117
- 21119:21119
volumes:
- ./data:/root
command: hbbr
EOF
if [[ "$USE_TLS" == "yes" ]]; then
echo ">>> 你启用了 TLS,将为你生成 Caddyfile..."
cat > Caddyfile <<CADDY
${DOMAIN}:443 {
reverse_proxy 127.0.0.1:21117
tls {
protocols tls1.2 tls1.3
}
}
CADDY
echo -e "\n✅ 请同时部署 Caddy 容器,或使用 Nginx/Traefik 反代 21117 → 443"
fi
echo -e "\n✅ 已生成 docker-compose.yml 文件于 $WORKDIR"
echo "你现在可以运行以下命令启动服务:"
echo -e "\ncd $WORKDIR"
echo "docker compose up -d"
3、使用方法
- 保存为:
generate_rustdesk_compose.sh
- 赋权并运行:
chmod +x generate_rustdesk_compose.sh
./generate_rustdesk_compose.sh
-
按提示输入服务器域名(如:
rust.mydomain.com
)与是否启用 TLS -
自动生成
docker-compose.yml
和可选的Caddyfile
4、后续你可以手动选择:
-
启动服务:
docker compose up -d
- 停止服务:
docker compose down
六、中继服务器的硬件要求
1、对网络的要求:较高
因为中继服务器负责转发双方之间的屏幕和控制数据,尤其在无法 P2P 打通时,所有数据都走中继,所以对网络带宽和稳定性要求较高:
项目 | 要求 |
---|---|
上/下行带宽 | 推荐 ≥ 20Mbps+(越高越好,视并发数而定) |
网络延迟 | 越低越好,理想状态 < 50ms |
公网 IP / 端口开放 | 需要有公网 IP,开放 TCP/UDP 端口 |
NAT 类型 | 不要求对称型 NAT(否则需全中继) |
防火墙设置 | 需放行 RustDesk 的默认端口或自定义端口 |
🔁 并发用户越多,占用的网络越大。例如:
-
每个远程桌面会话 ≈ 1~4 Mbps(高分辨率+60fps 可能更高)
-
10 个并发用户可能占用 40Mbps 以上
2、对硬件的要求:较低
RustDesk 的 hbbs
(信令服务器)和 hbbr
(中继服务器)资源占用很小,哪怕是 Raspberry Pi 或最低配云服务器都能运行。
资源 | 最低要求 | 推荐配置(10~50人) |
---|---|---|
CPU | 1 核 | 2 核 |
内存 | 256MB | 1~2GB |
存储 | 几十 MB | 1GB 以上即可 |
系统 | Linux/Windows/macOS | 推荐 Linux (Ubuntu/Debian/CentOS) |
3、总结建议:
使用场景 | 建议方案 |
---|---|
少量用户(1~5 人) | VPS 1 核 1G 内存 + 20Mbps 网络带宽即可 |
中型使用(10~50人) | VPS 2 核 2G 内存 + 100Mbps 网络,启用 TLS |
企业部署(50+) | 独立服务器 + 带宽 ≥200Mbps,上云或自建机房 |
七、中继服务器的安全性
通过中继服务器访问是否安全?
✅ 结论:
是否安全,取决于“是否加密”和“是否信任中继服务器”。
🚨 使用他人的中继服务器时的安全风险:
风险项 | 说明 |
---|---|
🔓 中继服务器可解密数据 | 如果 RustDesk 客户端未启用端到端加密(E2EE),中继服务器理论上可以读取/劫持屏幕画面和控制指令。 |
🎯 中间人攻击 | 若中继 TLS 配置不严密,可能遭遇中间人攻击(MITM) |
🔍 访问日志暴露 | 第三方服务器可记录你的访问、IP、会话时长等元信息 |
🧪 自定义客户端被植入 | 使用别人打包的 RustDesk 客户端,可能被嵌入后门或替换了连接地址 |
✅ 如何保证中继访问的安全?
措施 | 安全说明 |
---|---|
🔒 启用端到端加密(E2EE) | RustDesk 支持 E2EE(开启时,即使中继服务器也无法解密内容) |
🔐 自建中继服务器 + 自签 TLS | 保证链路加密可信,防止数据泄露 |
🧰 使用官方/可信来源构建的客户端 | 不要使用来历不明的第三方客户端 |
⚙️ 配置 id_ed25519 密钥 | 自建服务时,RustDesk 可强制客户端验证服务端公钥,防止钓鱼中继 |
💡 E2EE 如何启用?
RustDesk 从 v1.1.8
开始支持 E2EE:
-
设置端:
-
客户端设置 →
Enable Encryption (E2EE)
✔️
-
-
被控端:
-
接受连接时会显示“是否接受带加密连接”
-
注意:E2EE 模式下不支持文件传输
-
✅ 推荐做法:
建议 | 说明 |
---|---|
✅ 自建中继服务器 | 全流程可控、安全、稳定 |
✅ 开启 TLS 和 E2EE | 保证中继与客户端之间的加密安全 |
❌ 避免使用未知来源的中继服务器或客户端 | 防止后门、劫持 |
总结
是否安全? | 条件 |
---|---|
✔️ 安全 | 自建中继 + TLS + E2EE |
⚠️ 有风险 | 使用不明中继 或 关闭加密 |