RustDesk 是一个开源的远程桌面软件,提供了一种安全且高效的方式来访问和控制远程计算机。相比 TeamViewer、AnyDesk、ToDesk、向日葵等等一系列商业远程桌面工具而言,完全没有广告并且限制更少。
本文将指导你如何在服务器上使用 RustDesk 搭建一个远程桌面服务。
开始之前
不同于开箱即用的 TeamViewer、ToDesk 这类商业工具。RustDesk 分为服务端和客户端两个部分,其中服务端需要搭建在一台始终开机的中转服务器上。所以在开始之前,确保你已经拥有了一台可以访问的服务器。
本文会优先介绍通过 1Panel 运维面板进行部署的方法。1Panel 是一个用户友好的服务器管理面板,它简化了许多常见软件的安装过程,包括 RustDesk。
可以阅读我的另一篇文章:《1Panel:开源 Linux 服务器运维管理面板,让你活动买的服务器都能用起来 | #UNTAG》这篇文章里介绍了如何部署 1Panel。
RustDesk 也支持使用 Docker Compose 部署的方法和在群晖 DSM 7 中使用 Docker Compose 部署的方法,你可以直接参考上述官方文档进行部署,整体操作大同小异。至于为什么不直接使用 Docker 部署,文章最后会提到原因。
还需要注意,在国内家用网络环境下用 NAS 搭建 RustDesk 服务端需要更多的配置,比如需要在路由器上将端口号映射到公网、域名解析等问题。而且部署和使用时需要指定中转地址,没有域名只有动态 IP 不适合部署 RustDesk。
使用 1Panel 部署服务端
首先登录到你的 1Panel 管理界面。进入应用商店,找到 RustDesk 进行安装。
在安装过程中,你需要配置一些基本的服务器设置:
- 服务器端口:这里有一系列端口需要配置,可以直接使用默认值。其中的 21116 端口是 RustDesk 用于连接的主要端口。
- 使用域名或 IP 地址:你可以选择使用服务器的 IP 地址或是域名来配置 RustDesk。这一项必须修改为实际可访问的地址。
- 端口外部访问:必须勾选才能使用。
配置完成后确认就可以进行安装了。
等待一段时间后,RustDesk 就会完成部署,可以在“已安装”下找到服务。
1Panel 部署的 RuskDesk 是经过预配置的,所以你需要点击“进入安装目录”按钮,进入 /opt/1panel/apps/rustdesk/rustdesk/
目录,然后进入 data/hbbs
目录。
找到 id_ed25519.pub
文件,其中的内容就是在配置客户端时需要用到的 Key。
配置客户端
RustDesk 提供了 macOS、Windows、Android、iOS、Linux,甚至是 Web 的全平台客户端。
你可以在 RustDesk 官网下载客户端,但还是会跳转到 Github 仓库进行下载。
下载完成后,在设置 - 网络中进行配置。
- ID 服务器:你的服务器地址 + 21116 端口(例如: 111.112.113.114:21116)
- Key:
id_ed25519.pub
文件的内容
然后点击应用。
以上操作你需要在所有设备上进行配置。比如你想用家中电脑远程控制公司电脑,你需要在两台电脑上都配置中继服务器。
你只需要在桌面端配置一次。然后点击右上角的“复制”按钮,就可以导出配置。“复制”左侧的“粘贴”按钮,可以导入配置。只需要将配置放在密码管理工具中,就可以在手机端粘贴配置进行快速配置了。
到此为止,配置工作就完成了。
客户端使用方法
使用的时候,只需要将“受控端”的电脑 ID 记录下来。在你当前使用的电脑中输入这个 ID 和密码就可以进行远程连接了。
这里要说明的是,电脑 ID 是不会改变的,除非你手动重置。所以你可以将受控端的电脑记录在密码管理工具中,以备不时之需。
而一次性密码则会自动变化。如果你的设备完全是自己使用的,而且长时间待机,希望每次都用一样的密码,可以考虑在“设置 - 安全”这里改用“固定密码”。
成功连接后就可以按照正常远程桌面的用法进行使用了。
常见问题
为什么首次连接总是失败?
由于 RustDesk 有它官方的中继服务器,首次连接可能会尝试走官方服务器进行连接导致连接失败。你可以右键该设备,启用“强制走中继连接”。
为什么我无法连接到休眠的电脑?
当电脑进入休眠模式时,它实际上关闭了大部分硬件设备的电源,包括网络适配器,以节省能源。因此,电脑在休眠状态下通常无法响应网络请求,包括远程桌面连接请求。
为什么感觉连接卡顿?服务器需要什么配置才能流畅远程?
远程桌面的带宽需求取决于多种因素,包括屏幕分辨率、颜色深度、桌面环境的复杂度、活动的应用程序以及用户的活动强度。例如,视频播放或图形密集的应用程序会消耗更多的带宽。
通常情况下,标准的办公应用(如文档编辑、浏览网页等)可能需要每个会话大约 100 Kbps到 1 Mbps 的带宽。
对于低价服务器常见的 1 Mbps 的带宽,如果是单个用户使用远程桌面进行文档编辑或其他不太消耗资源的活动,通常是足够的。但如果要进行更高分辨率、更多颜色或更高数据更新频率的活动,或者有多个用户同时连接,那么可能需要更大的带宽。也可以考虑在客户端降低画质以换取更流畅的速度。
为什么我无法在远程时修改被控端的配置文件?
出于安全考虑,RustDesk 默认不允许远程修改配置。你需要在被控端本机上启用“允许远程修改配置”的选项。
关于防火墙导致的问题
2024-10-22-更新:有读者反馈客户端显示“未就绪,请检查网络连接”,点击连接时显示“ID 不存在”的问题。
你需要先检查 Docker 的日志,是否正确启动了服务、是否正确输入了 IP、端口、Key。
在客户端也可以找到对应的日志,通常可以看到 reglster_pk of xxx.xxx.xxx.xxx due to key not confirmed
的提示,这不一定是 key 错误,通常说明你和服务器之间的通信出现了问题,导致无法验证 key。
在确保服务端已经正常启动、客户端正确配置后。这通常是与防火墙有关的配置问题引起的。
这里有 3 个注意点:
- 在 RustDesk 中,21116 需要开启 TCP + UDP 协议。
- 你需要检查服务器端的防火墙配置,1Panel 的默认配置文件会在 1Panel 中自动开启 TCP + UDP。
- 【重点】你需要检查服务器供应商(阿里云、腾讯云)是否做了安全组策略。这需要到供应商的后台打开“安全组策略”菜单,可以尝试开放 21115 - 21119 的 TCP 端口 + 21116 的 UDP 端口。
此处尤其要注意 21116 端口的 UDP 协议是否开启。以阿里云为例,当你一键放行所有端口时,仅会放行 TCP 端口。
在完成上述步骤后,再次尝试连接,应该可以解决此问题。
附上 Docker Compose 文件
官方文档中的 Docker 部署方法非常简略,甚至不包括端口映射。而是将端口映射作为可选内容写在了文档中,如果你直接使用官网提供的版本恐怕要踩不少坑了。
官方版本的 Docker Compose 文件示例:
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
这也是为什么我更推荐使用 1Panel 部署的原因,1Panel 版本的 Docker Compose 文件做了一些预配置工作,你几乎不需要改动配置文件就可以完成服务端的部署。
因此,更建议使用下面这个微调过的 Docker Compose 文件。
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r rustdesk.example.com:21117 -k _
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr -k _
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
这个配置中添加好了端口映射和命令,其中 rustdesk.example.com
需要替换为实际可用的服务器地址,修改后就可以直接进行部署。
你可以注释掉不需要的端口号(如果你不了解每一项的作用,不要改动)。
# 21114 TCP 为专业版提供的 Web 控制台服务
# 21115 TCP 用于 NAT 类型测试
# 21116 TCP 实现 TCP 穿透
# 21116 UDP 用作心跳/ID 服务器
# 21117 TCP 用于数据中继
# 21118/21119 TCP 为 Web 客户端提供 WebSocket 连接
另外在 command 最后添加的 -k _
的字样,即强制要求配置 Key 才能访问,这也是推荐的操作,否则可能会被人通过扫描端口等方式白嫖中转服务器,导致损失服务器流量。
通过这个文件启动后,在 /data
目录下找到 id_ed25519.pub
文件作为 Key,后面的操作就和 1Panel 一样了。
小结
RustDesk 服务我已经用了大半年的时间,我个人的使用体验是非常可靠,可以很轻松地访问到家里的电脑。服务器 2 Mbps 的小水管也足够个人使用。相比各种需要付费和忍受广告的商业服务,RustDesk 的部署过程也被 1Panel 和 Docker Compose 简化了很多。
如果是 Windows 台式机,还建议你购买一张远程开机卡(淘宝很容易找到,价格在数十到上百元不等),这样就无需把电脑一直开着,只有在有需要的时候启动电脑进行远程。