快速总结: 最近很多使用自建 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,而是手动强制指定一个密钥。在启动 hbbshbbr 时加上 -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-server
  • sctg-development/sctgdesk-server

方案四:修改客户端源码编译

对于硬核开发者,可以 fork 官方客户端代码,在 src/common.rs 中将 secure_tcp 函数修改为直接返回 true,然后通过 GitHub Actions 重新编译你自己的专属客户端。

最后修改:2026 年 04 月 17 日
如果觉得我的文章对你有用,请随意赞赏