关于PC端链接超时或者链接不上的问题以及解决方案 | About the problem of timeout or connection failure on PC and how to solve it
因为server不会发起客户端的secure_tcp请求,所以客户端超时。
相关代码代码位置在https://github.com/rustdesk/rustdesk/blob/master/src/client.rs
if !key.is_empty() && !token.is_empty() {
// mainly for the security of token
allow_err!(secure_tcp(&mut socket, key).await);
}
可看到当key和token都不为空时,会调用secure_tcp,但是server端不会响应,所以客户端超时
但不登录API账户,则不会有token,所以非登录状态下不会超时,但非登录状态下还是可以加密链接的,所以可以将secure_tcp直接返回
secure_tcp 代码位置在
解决方案
- server端指定key。
hbbs -r <relay-server-ip[:port]> -k <key>
hbbr -k <key>
比如
hbbs -r <relay-server-ip[:port]> -k abc1234567
hbbr -k abc1234567
-
server端使用系统生成的key,或者自定义的密钥对,但如果client已登录,链接时容易超时或者链接不上,可以退出登录后再链接就可以了,webclient可以不用退出登录
-
server端使用系统生成的key,或者自定义的密钥对,fork官方客户端的代码将
secure_tcp修改成直接返回,然后通过Github Actions编译,下载编译后的客户端。 参考官方文档 -
使用其他fork的
server端
对链接加密要求不高的可以使用1,对链接加密要求高的可以使用3,4,5
这个问题是不是只有等官方新版本的server端更新修复才能解决?
这个问题是不是只有等官方新版本的server端更新修复才能解决?
官方应该不会管这个,这个只有登录了账号才会遇到这个问题,而api是pro才有的功能,开源版不会遇到这个问题
想问下方法三修改客户端具体怎么改呀,直接把common改成:pub async fn secure_tcp(conn: &mut FramedStream, key: &str) -> ResultType<()> { let rs_pk = get_rs_pk(key); if !key.is_empty() { return Ok(()); }就行吗
想问下方法三修改客户端具体怎么改呀,直接把common改成:pub async fn secure_tcp(conn: &mut FramedStream, key: &str) -> ResultType<()> { let rs_pk = get_rs_pk(key); if !key.is_empty() { return Ok(()); }就行吗
直接返回Ok就可以了 https://github.com/rustdesk/rustdesk/commit/22eb19faa2693c4745777e99d2b1a2c87ddf1ca9
1.3.8的版本有更新么
1.3.8的版本有更新么
忘记更新了,昨天同步了下是1.3.9了
你好,还有一个问题咨询下就是我现在有一个Mac的机器,安装你这个dmg格式无法安装到机器中,我是M4芯片
直接返回OK后windows客户端使用正常,windows端和安卓端都连不上安卓端提示unknown reason
请问,是只有桌面版才会有这个问题吗?
请问,是只有桌面版才会有这个问题吗?
是的,web端应该没这个问题
为什么server端指定key以后, server端 不会响应 secure_tcp呢? 现在Server端是强制使用KEY了,不指定也会强制生成一个的
1.3.9 版本貌似无法使用,换回 1.3.7 正常。
1.3.9 版本貌似无法使用,换回 1.3.7 正常。
同样的问题,不知道哪里没设置对