news 2026/10/2 3:26:40

RustDesk 自建远程桌面:3分钟部署私有中继,摆脱商业工具限制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RustDesk 自建远程桌面:3分钟部署私有中继,摆脱商业工具限制

看到“62.3k Star”和“远程桌面”这两个词搁在一起,老玩家应该都能笑出来:说的就是RustDesk。这个开源项目这几年在GitHub上几乎成了远程桌面自托管代名词,六万多个Star不是凭空涨出来的,而是被商业远程软件一轮接一轮涨价、被各种授权和设备数限制、也被“我桌面上的东西到底经过谁家服务器”这种疑虑一点点推上去的。用一句话概括它的价值:RustDesk开源、免费、跨平台,既可以用官方公共服务器开箱即用,也可以把ID注册和中继服务放到自己的服务器上,让远程访问的数据完整跑在自己可控的链路里。适合谁?远程办公的人、给家里亲戚当“电脑救火员”的你、自托管上瘾的折腾党、以及不想给十几台设备反复续授权的小团队IT。

下面我把“3分钟自建远程桌面”这条路完整走一遍,包括服务端部署、客户端填写、高频踩坑,每一步都会解释为什么这么做,而不是只丢给你一串命令。

1. 项目速览:62.3k Star背后到底解决了什么问题

1.1 远程桌面工具的三大痛点

在工作里远程桌面几乎躲不开。你可能是要给客户演示,要连回办公室电脑拿文件,或者一边在咖啡厅改代码一边编译服务器上的项目。传统商业远程工具给我的体感是三个字:用不起、限得死、不放心。

先说费用。个人版经常会弹出“商用检测”,要么收费要么限时。企业版就更不用说了,一台设备一个授权,团队一扩张,账单比宽带费还显眼。再说限制,免费版有限速、限时长、限设备数、限会话数,体验被切得很碎。最让人不踏实的其实是隐私:连接过程中屏幕内容、剪贴板、文件都要经过第三方中转服务器,虽然多数工具宣传加密,但“中转服务器是谁的、记录留存多久、能不能免于审查”这些问题,普通用户根本无从验证。

这三个痛点叠加在一块,正好是RustDesk这类开源项目的切入点。它把“远程桌面”这件事拆成了可以去中心化的协议:工具本身开源,服务端可以自己部署,通信本身加密,你能看到的逻辑都写得明明白白。

1.2 RustDesk的核心优势在哪

首先是跨平台。Windows、macOS、Linux、Android、iOS都有官方客户端,UI风格统一,没搞“桌面端免费、移动端收费”那套。其次是免费开源,个人用、公司用,只要遵守开源协议,都没有授权费用,也不需要“许可证”。再然后是部署方式灵活:嫌麻烦就用官方公共服务器,想要隐私就跑自建服务端。

自建这个点是最抓人的。你自己控制ID注册服务器和中继服务器之后,远程流量走的是你自己的机器,第三方拿不到你两端的通信入口信息,就算看到也只是一堆加密数据。用生活里的话说:商业工具是钥匙存在物业那儿,物业说我没偷看过,你只能选择信它;自建是把钥匙放回自己口袋,楼道监控也是自己的,你不需要“赌”。

1.3 Star数背后是社区口碑的积累

62.3k这个数字并不代表活跃用户总量,但代表认可度。GitHub上的Star背后是愿意点一下的开发者、尝试过的用户、围观了很久的技术爱好者。一个远程桌面项目能到这个量级,说明它真的解决了一大批人的问题,也说明它的开源许可以及代码质量经得起社区审视。我自己的观感是,RustDesk的迭代节奏也很勤,基本每个月都有新版本,诸如Wayland支持、移动端改进、性能问题都在持续推进。项目Star多不等于没坑,但至少说明踩坑的经验能找到一大片,遇到问题不被搁浅。

2. 动手之前,先把服务端原理吃透

2.1 一次远程连接是怎么找到对方的

远程桌面的核心难点不是“连接后怎么传画面”,而是“在不知道对方局域网IP的情况下,怎么找到对方”。两台设备通常都在各自的局域网里,没有公网IPv4,直接互通是不可能的,所以需要一个公网上的服务做“介绍人”。

RustDesk的思路是两层:ID注册服务器(hbbs)负责记录每台设备的ID,并且在双方发起连接时做信令交换;中继服务器(hbbr)负责在NAT穿透实在打不通时,把屏幕和操作数据转发过去。ID就像门牌号,hbbs像总机前台告诉你“对方现在在哪个地址”,hbbr像快递中转站,直连不通就帮你转递包裹。

2.2 hbbs和hbbr分别管什么

这俩名字刚接触会有点懵,其实职责非常清楚。hbbs是ID注册与信令服务器,负责设备注册、心跳、NAT类型探测等;hbbr是中继服务器,专跑数据转发。部署时一般跑在一台机器上,端口各管各的。

组件默认端口主要职责
hbbsTCP 21115NAT类型测试与信令
hbbsTCP/UDP 21116ID注册、心跳、UDP打洞
hbbrTCP 21117中继数据转发
hbbsTCP 21114API/Web控制台(新版本可选)

实际使用中,最容易漏掉的是UDP 21116。很多教程只开了TCP端口,结果ID能注册,连接时却卡在“连接中”,因为UDP打洞包到不了服务器。后面排查章节我会专门强调。

2.3 为什么自建服务器更让人安心

这里要说得严谨一点:即使使用官方公共服务器,RustDesk的通信本身也是端到端加密的,消息和屏幕数据理论上是加密的。但“加密”和“隐私”不是一回事。使用官方服务器时,你的设备ID、连接时间、双方IP信息这些元数据会存在别人那儿;遇到官方服务器繁忙、被限流量或临时不可用,你什么都干不了。自建之后,这些元数据都在你掌控里,可用性也取决于你的机器而不是别人的运维排期。

我常给朋友打的比方是:加密相当于信封封口,元数据相当于信封上的收发件地址。信封口是封了,但地址都写在明面上。自建服务器,等于收件地址也换成了你自家的邮箱。

3. 实操:3分钟从零到能连

3.1 准备工作:一台有公网IP的Linux服务器

自建需要一台有公网IP的机器。不需要很高配置,RustDesk服务端非常轻量,1核1G的云主机完全够跑,甚至比很多网站服务器都省。我建议新装一个干净的Ubuntu 22.04 LTS或Debian 12,然后把系统更新做掉。不需要域名,纯IP也能用,当然有域名后面挂证书会方便一点,但初期不必须。

如果你手里没有云服务器但又特别想自建,还有个方向:家里路由器如果有公网IPv4,配合DDNS也可以把服务暴露出去。但运营商的公网IPv4现在越来越难拿到,这部分先不展开,没有公网环境就老老实实先用官方服务器体验。

3.2 Docker部署:两条命令跑通服务端

有Docker的话,部署真的就是两条命令。先创建目录存配置,再跑两个容器。

mkdir -p rustdesk-data && cd rustdesk-data docker run --name hbbs \ -p 21114:21114 -p 21115:21115 -p 21116:21116 \ -p 21116:21116/udp -p 21117:21117 \ -v ./data:/root -d --restart unless-stopped \ rustdesk/rustdesk-server:latest \ hbbs -r 你的服务器公网IP:21117 docker run --name hbbr \ -p 21117:21117 \ -v ./data:/root -d --restart unless-stopped \ rustdesk/rustdesk-server:latest \ hbbr

第一条命令启动ID注册服务器,第二条启动中继服务器。注意hbbs后面那个-r 你的服务器公网IP:21117一定要填你的真实公网IP,它会在设备注册后把这个中继地址发给客户端。如果填错了,客户端注册成功,但建立连接时会找不到中继。

跑完容器后,到./data目录里找到id_ed25519.pub,用下面命令看内容:

cat ./data/id_ed25519.pub

这串内容就是客户端的Key,相当于服务端的握手凭证,后面配置客户端时必填。

3.3 二进制部署与开机自启

不用Docker的环境也完全可以跑二进制。去GitHub Releases页面下载rustdesk-server-linux-amd64.zip(其他CPU架构认准自己的平台包),解压后会得到hbbs和hbbr两个可执行文件:

wget https://github.com/rustdesk/rustdesk-server/releases/latest/download/rustdesk-server-linux-amd64.zip unzip rustdesk-server-linux-amd64.zip cd rustdesk-server-linux-amd64 chmod +x hbbs hbbr ./hbbs -r 你的服务器公网IP:21117 & ./hbbr &

这种跑法仅仅是前台/后台进程,重启后会丢,建议用systemd。每个服务写一个service文件,比如/etc/systemd/system/hbbs.service,内容大致如下:

[Unit] Description=RustDesk ID Server After=network.target [Service] ExecStart=/opt/rustdesk-server/hbbs -r 你的服务器公网IP:21117 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target

hbbr同理,把ExecStart换成hbbr路径即可。写完systemctl daemon-reload && systemctl enable --now hbbs hbbr。这套流程适合任何没有Docker、不想引入容器依赖的生产环境。

3.4 客户端三处必填项

服务端起来之后,剩下的就是客户端配置。以Windows为例,到GitHub Releases下载Windows版RustDesk安装包,装好后先打开设置里的“网络”页面。你会看到几个字段:ID服务器、中继服务器、API服务器、Key。

按下面填:

  • ID服务器:你的服务器公网IP:21116
  • 中继服务器:你的服务器公网IP:21117
  • Key:id_ed25519.pub里的完整内容

填完点确定或应用,然后最好完整退出客户端再重新打开。为什么不是点完立即生效?因为设备ID注册是启动时做的,不重启客户端它可能还连着官方服务器。重启后,底部ID会保留,但服务器已经切换到你的自建环境。把同一组配置填到另一台设备上,两台设备就会注册到同一个服务器,以后CID直接连接。

Android和iOS端路径类似:设置里找到“网络”或“ID/中继服务器”,填同样的IP和Key。值得注意的是密码设置,如果是要做无人值守,在受控端设置永久密码;临时连接直接用每次生成的临时密码就行。

4. 真正好用的日常姿势

4.1 无人值守与临时密码

自建的服务器就绪以后,最常用的场景是“无人值守”。公司电脑、家里的老台式机、NAS旁边的下载机,装上客户端并设置永久访问密码,你在任何地方打开手机App,输入设备ID和密码就能接进去。这个体验和商业工具没有本质区别,区别只在于背后跑的是你自己的服务器。

临时密码适合帮别人解决问题。给家人远程装驱动、看弹窗、清理垃圾,让他打开RustDesk把ID和临时密码发给你,你连上去,操作完断开。临时密码每分钟都会轮换,用完即失效,安全性比我小时候报QQ号让他发验证码再慢吞吞操作强太多了。

4.2 跨设备与文件传输

很多人不知道RustDesk连接后自带文件传输功能。建立连接后,在工具栏找到文件传输入口,可以按目录浏览对端磁盘并传输文件。Windows、macOS、Linux之间跨平台传文件很顺,不需要再塞一个网盘客户端。剪贴板默认也是共享的,复制文本、复制小文件路径都跟本机操作差不多。如果你要传大文件,建议优先走局域网直连场景,走中继的话会受服务器带宽限制。

音频方面,如果两端都是Windows,控制端默认也能听到被控端的声音,在连接设置里勾选“声音”相关选项即可。默认没开可能让一部分人误以为不支持,其实是没找对开关。

4.3 和RDP、RDPWrap、商业工具怎么选

很多人第一反应是:Windows不是自带远程桌面吗?为什么还要装RustDesk。这里要分情况。Windows自带RDP在局域网内体验很好,但有几个硬伤:一是Windows家庭版没有远程桌面服务端,被控端要Pro及以上;二是公网访问要自己做端口映射、动态域名,暴露3389到公网还会被扫描器盯上;三是RDP授权模型在某些环境会跳“没有远程桌面授权服务器”之类的报错,处理起来很费神。

网上还有RDPWrap这种试图让家庭版强制开启RDP服务端的方案,我的建议是别折腾。RDPWrap要加载未签名驱动、替换系统文件,杀毒软件会报警,微软一个更新可能就让它失效,而且它本质是在跟系统授权机制较劲,不适合正经使用。

方案公网访问授权成本设备数量数据路径适用场景
RustDesk自建自带中继免费不限自控服务器跨平台、远程办公、家庭维护
Windows RDP需自己映射家庭版无服务端视授权直连或自建映射局域网Windows互连
RDPWrap需自己映射无,但有风险视部署直连或自建映射不推荐生产环境
商业远程工具自带服务器订阅/设备数受限官方服务器图省事、团队托管

4.4 什么时候不需要自建服务器

如果只是偶尔帮朋友弄一次电脑,一个月用不了一两次,直接用官方公共服务器就行。RustDesk不开付费墙,公共服务器也能用,只是高峰期可能排队或者延迟偏高。自建服务器的核心收益是稳定和隐私,这两点你用不上,那就没必要多养一台服务器。反过来,你如果每天都要连电脑、还涉及办公文件和个人数据,自建一台服务器,成本其实低得可以忽略。

5. 常见问题排查实录

5.1 高频问题速查表

现象大概率原因处理方式
客户端提示“无法连接ID服务器”服务器的21116端口没通检查云安全组和系统防火墙,TCP/UDP都要放行
ID能注册但一直“连接中”UDP 21116被禁,或中继21117不通重点检查UDP端口,中继端口确认无遗漏
连接时提示“Key不匹配”客户端填的Key和服务端不一致重新查看id_ed25519.pub并完整复制
两台设备找不到对方一台连官方服务器,一台连自建服务器确保两端网络配置完全一致
手机端连不上手机App版本太旧或配置少填升级客户端,重新检查填写的IP和端口
连接后画面模糊/卡顿中继带宽不足或客户端画质设置低提高码率设置,或改用更直接的网络路径

5.2 端口不通的排查顺序

端口问题是自建远程桌面里出现率最高的问题,而且经常不是“一个坑”而是“连环坑”。我的建议是按这个顺序查:先查云服务器安全组,再查系统防火墙,最后查进程监听状态。很多云主机的安全组和系统防火墙是两层独立的东西,安全组放行了但本机ufw没放行,还是会失败;反过来也一样。可以先用ss -lntup | grep 21116看进程有没有在监听,再用外部工具或手机流量访问IP:21116测试连通性。

5.3 Key和配置不同步的两个典型场景

第一个典型场景是服务器数据目录被重新创建过。有些人清理磁盘时把/root或者数据目录删了,hbbs重启会生成新的密钥对,旧客户端就全部失联。处理方式很笨也很有效:把所有客户端Key统一更新成新的,或者恢复旧数据目录备份。第二个典型场景是换服务器IP后,客户端的ID服务器还是旧IP,会直接无法注册。换IP后只需要把客户端网络配置里的IP改掉,再次重启客户端。这里也提醒一句,服务器数据目录务必备份,尤其是id_ed25519私钥文件和db_v2.sqlite3数据库文件,丢了等于所有设备重来一遍。

6. 进阶心得与最后提醒

6.1 安全加固三板斧

第一,访问密码不要用弱密码。这个道理容易懂,但实际不少人图省事设置成“123456”,自建服务器虽然不主动暴露,但设备ID如果被扫到依然有被暴力尝试的风险。第二,可以考虑在客户端设置里限制允许连接的主机列表,或者使用RustDesk提供的访问控制选项,把“不可控制”“仅可查看”等权限按设备区分开。第三,及时升级服务端和客户端。RustDesk更新频率高,很多安全修复和稳定性的改进都靠版本迭代带出来,卡在旧版本等于把已知问题一直背在身上。

端口方面如果公网扫描特别多,我还会建议把默认端口改掉。RustDesk的端口在客户端是一起填的,自定义端口完全可行,只要两端填一致。改端口治标不治本,但对降低无效扫描日志量很有帮助。

6.2 我的实际使用感受

我自己这套RustDesk部署在一台1核1G的云主机上,日常用来连接家里的Windows主机和办公室的Ubuntu工作站。一个月跑下来体感一直在线,局域网内直接走P2P穿透,延迟几乎感觉不到;跨网络走中继时,画面有轻微延迟,但办公操作足够跟手。唯一一次翻车就是开头提到的UDP 21116没放行,查了一整个晚上才发现。

如果让我给一个结论,我不会说“所有远程桌面工具都可以扔了”。商业工具有它省心的地方,RDP也有它局域网场景的优势。但如果你正在被订阅费、设备数限制和隐私疑虑困扰,RustDesk自建这套方案确实值得花一个晚上,不,按上面的流程,三分钟就够你跑通了。后面升级、加固、加域名,都是顺手的事。最后一个小建议:把服务器配置截图存在云笔记里,或者导出为配置文件,下次换手机、换电脑时直接导入,不用再手敲IP和Key。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 3:26:22

智能产品如何“说人话”?表达设计的三大层次与落地方法

1. 内容整体设计与思路拆解1.1 “表达”在人本智能六大原则里的特殊位置把《人本智能产品设计6原则》读到“04表达(上)”,我明显感觉到前三条原则和第四条之间的“坡度”不一样了。前三条如果按常见的框架来对应,大致是“感知—理…

作者头像 李华
网站建设 2026/10/2 3:25:56

vLLM 与 K8s 实战:从 GPU 调度到弹性伸缩的推理服务部署指南

把一个大模型从“能跑”变成“能扛住生产流量”,中间隔着一整座 K8s 的坑。最近几个月我一直在折腾 vLLM 和 K8s 的组合:一边是当前大模型推理服务里最常见的开源框架,负责把 Qwen、GLM、DeepSeek 这类模型跑出高吞吐、低延迟;另一…

作者头像 李华
网站建设 2026/10/2 3:25:43

全国旅游景区数据集处理:JSON/Excel清洗与坐标转换实战

简介:全国旅游景区数据集收录了约12000条景区记录,时间节点为2022年6月,覆盖1A至5A等级景点,字段包含景点名称、所在城市、详细地址、景区等级、经度和纬度,可满足旅游数据分析、地图可视化、行程规划、景点检索等应用…

作者头像 李华
网站建设 2026/10/2 3:25:03

从零构建AI工程:数据契约、服务契约与最小可行实验追踪

1. 为什么“从零构建AI工程”不是写个模型就完事了“AI Engineering from Scratch”——这个标题乍看像极了某本技术书的副标题,或者某个开源项目的README第一行。但如果你真照着字面意思去干,十有八九会在第三天凌晨两点盯着GPU显存溢出报错、数据管道卡…

作者头像 李华
网站建设 2026/10/2 3:25:00

MySQL入门实战:从建表到增删查改的完整CRUD操作指南

MySQL入门绕不开的坎,就是增删查改这四个动作,也就是常说的CRUD。很多教程把增删查拆得七零八落,讲插入的只讲插入,讲查询的只讲查询,读者看完感觉自己什么都见过,可真到工作里要动手建表、写查询、改数据的…

作者头像 李华
网站建设 2026/10/2 3:24:59

MySQL删除操作详解:drop、delete、truncate的区别与实战避坑

干过几年数据库的人,基本都被问过一个问题:drop、delete、truncate到底有什么区别?前两天还有个朋友找我,说他在测试环境执行了一条不该执行的delete,结果整个表的数据全没了,幸好有备份,不然直…

作者头像 李华