快速总结: 最近很多使用自建 Rustdesk 服务端的用户,在连接时会遇到
Failed to secure tcp: Handshake failed: invalid public key from rendezvous server 的报错。这不是因为官方封杀第三方自建,而是最新版客户端的加密握手协议超时导致的。最快的临时解法是 退出客户端账户登录 ;最彻底的解法是 在服务端配置固定 Key 。
为什么会出现 failed to secure tcp 错误?
很多传言说新版 Rustdesk 不再支持自建服务,其实这是个误区。
根据 GitHub 上的源码分析(src/client.rs),当客户端同时拥有加密 Key 和 API 登录 Token 时,为了保护 Token 安全,客户端会强制发起 secure_tcp 握手请求。但是,目前的开源版 Server 端并没有正确响应这个请求,导致客户端直接超时断开连接。
如果你不登录 API 账户(没有 Token),就不会触发这个强制验证,自然就能连上。
如何彻底解决该问题?(4种方案)
方案一:退出客户端登录(最快、小白首选)
如果你只是偶尔用一下,对端到端加密要求不高,最简单的办法就是:在 Rustdesk 客户端中点击头像, 退出你的账户登录 。
注:清空 Token 后就不会触发超时 Bug,亲测 100% 有效。网页版客户端 (WebClient) 通常不需要退出即可使用。
方案二:服务端强制指定 Key(推荐管理员使用)
如果你是服务端的搭建者,建议不要使用系统随机生成的 Key,而是手动强制指定一个密钥。在启动 hbbs 和 hbbr 时加上 -k 参数。
示例命令:
Bash
hbbs -r <relay-server-ip[:port]> -k abc1234567
hbbr -k abc1234567(请将 abc1234567 替换为你自己的强密码)
方案三:使用第三方优化的 Docker 服务端镜像
如果你希望保持客户端登录状态,又想完美解决连接问题,可以使用 GitHub 开发者 fork 后修复了握手逻辑的服务端镜像。目前主流可用的替代 Docker Image 包括:
lejianwen/rustdesk-server(S6 版本已包含 API)IamTaoChen/rustdesk-serversctg-development/sctgdesk-server
方案四:修改客户端源码编译
对于硬核开发者,可以 fork 官方客户端代码,在 src/common.rs 中将 secure_tcp 函数修改为直接返回 true,然后通过 GitHub Actions 重新编译你自己的专属客户端。
2 条评论
已经2026年4月了, 1.4.6版本还是没修复
只影响有自建第三方API服务情况下的连接,也就是登录账号之后会出现问题...可以看看 https://github.com/lejianwen/rustdesk-api/issues/346 的讨论。解决方案可以参考:https://github.com/lejianwen/rustdesk-api/issues/92 。