远程协助 国内用ToDesk 国外用RustDesk

远程协助, 远程控制手机, 电脑等各平台设备

有什么用

在寻找远程协助客户, 家人, 朋友的手机或电脑时,寻找最佳体验的解决办法

比如:想现场讲解如何操作,演示操作过程,代替朋友协助操作软件系统画面

下一步计划:

怎么用

国内用ToDesk 国外用RustDesk,不是没有道理的,ToDesk国内有中转服务器架设,这样使用的体验上就比RustDesk(开源)的要好;除非我们自己架设RustDesk服务器节点,可是即便这么做了,还得需要编译RustDesk的手机和电脑端APP,这样才能避免受协助端无需去操作界面填写服务器地址端口等等信息(因为需要协助的人,如果很懂IT,那ta很可能性不需要协助了)

完美的协助流程:

  1. 发送被控端(受协助对象)APP给需要协助的家人朋友或客户,让对方安装到手机或者电脑上(不如什么平台的电脑:Windows,MAC,Ubuntu等等)
  2. 沟通获取被控端提供,远程协助的ID
  3. 在控制端,输入远程协助ID,点击连接
    1. 有时,还需要被控端接受远程协助的确认点击。

相关内容

实现方法

手机的远程控制APP,实现远程操作安卓手机,可能需要越狱?

1. TeamViewer

https://www.youtube.com/watch?v=UXRvw49jH3s

2. 锐连 随时随地远程协助 https://remobax.top/

忘记以前那个什么app了,手机内存找一找  
    如何使用AirMirror App实现手机远程控制手机? AirDroid
    https://github.com/bk138/droidVNC-NG
    https://f-droid.org/packages/net.christianbeier.droidvnc_ng/

3. ToDesk 或者 选择anydesk(同样的原理还免费,但是大陆不开梯子会很卡)

ToDesk,远程客户请使用官方的精简版,

​ 下载链接1: https://dl.todesk.com/windows/ToDesk_Lite.exe 或者 https://file.carlzeng.com:3/d/SWITCH%E4%BB%BB%E5%A4%A9%E5%A0%82/ToDesk_Lite.exe

4. rustdesk

How to modify the client default server address in the code 
自己搭建服务器,但是每次发给别人都需要去改服务器地址,修改代码的那个位置,可以默认服务器ip,以后发给别人都可以不用添加服务器地址?
https://github.com/rustdesk/rustdesk/discussions/2236
    Sciter.JS - HTML/CSS/JS embeddable engine.

http://aizuda.com/article/1088975
docker-compose 部署restdesk服务器

4.1 Docker build

#8 83.01 Environment variable VCPKG_FORCE_SYSTEM_BINARIES must be set on arm, s390x, ppc64le and riscv platforms.

解决办法:拆分成三个独立的命令

1
2
3
RUN git clone --branch 2023.04.15 --depth=1 https://github.com/microsoft/vcpkg --single-branch
RUN /vcpkg/bootstrap-vcpkg.sh -disableMetrics
RUN /vcpkg/vcpkg --disable-metrics install libvpx libyuv opus aom
方向性错误,编译出windows,mac的客户端没有意义;我需要编译出APK

4.2 rustdesk/flutter/

https://github.com/rustdesk/rustdesk/tree/master/flutter
85 mins remaining

测试了一下国内直连默认服务器使用,安卓端的按键和确认动作太多,延迟太大了
难怪方案:国内用todesk,国外用rustdesk;

尝试自建服务器

4.3 docker-compose 自建ID和relay服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
environment:
- ALWAYS_USE_RELAY=Y
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[src/common.rs:147] Private/public key written to id_ed25519/id_ed25519.pub
hbbs | [2025-12-29 13:32:49.446375 +00:00] INFO [src/rendezvous_server.rs:1205] Key: huHpigOnBqrvwEH3eBFKULUWgiywtacmBpyJpupxyTE=



carlzeng@MacBookPro ~ % nc -vz 192.168.6.117 21114
nc: connectx to 192.168.6.117 port 21114 (tcp) failed: Connection refused
carlzeng@MacBookPro ~ % nc -vz 192.168.6.117 21115
Connection to 192.168.6.117 port 21115 [tcp/*] succeeded!
carlzeng@MacBookPro ~ % nc -vz 192.168.6.117 21116
Connection to 192.168.6.117 port 21116 [tcp/*] succeeded!
carlzeng@MacBookPro ~ % nc -vz 192.168.6.117 21117
Connection to 192.168.6.117 port 21117 [tcp/*] succeeded!
carlzeng@MacBookPro ~ % nc -vz 192.168.6.117 21118
Connection to 192.168.6.117 port 21118 [tcp/*] succeeded!
carlzeng@MacBookPro ~ % nc -vz 192.168.6.117 21119
Connection to 192.168.6.117 port 21119 [tcp/*] succeeded!

TODO: 故障: 转发后, 无法连接到本地服务器的21116 和 21117.

解决过程:

​ 重启以后, 依旧失效, 无法连接到117明明是开放着的21117; 其他端口设置了转发就有成功的… 为何就是改的这几个端口死活就是无法链接呢?

1
2
3
4
5
6
7
8
9
10
11
carlzeng@MacBookPro ~ % nc -vz 111.193.104.114 11117                                                             
nc: connectx to 111.193.104.114 port 11117 (tcp) failed: Connection refused
carlzeng@MacBookPro ~ % nc -vz 111.193.104.114 3
Connection to 111.193.104.114 port 3 [tcp/compressnet] succeeded!
carlzeng@MacBookPro ~ % nc -vz 111.193.104.114 6
Connection to 111.193.104.114 port 6 [tcp/*] succeeded!

carlzeng@MacBookPro ~ % nc -vz 111.193.104.114 1117
Connection to 111.193.104.114 port 1117 [tcp/ardus-mtrns] succeeded!
carlzeng@MacBookPro ~ % nc -vz 111.193.104.114 1116
Connection to 111.193.104.114 port 1116 [tcp/ardus-cntl] succeeded!

原来又是运营商搞的鬼; 当路由器端完成了转发后, 其实流量数据包是在运营商那端被丢弃的, 导致(tcp) failed: Connection refused.

切换到小的端口值号时候, 可以正常连接了服务器节点.

安装安卓默认版本, 统一网络下连接顺利

故障: 移动网络中的安卓, 无法连接到id服务器(切换端口到116, 117以后可以连接到RustDesk网络, 就绪. 偶尔断开)

当手机的网络属于‘中国移动’的网络时, 无法从MAC连接进行远程协助.(即便是状态显示就绪; 很快又跳成未就绪, 请检查网络连接)

本小结有参考并阅读了: RustDesk 自建服务器部署和使用教程

4.4 编译rustdesk客户端

通过上面的docker部署rustdesk服务端, 让rustdesk的运行有了底层的服务基础; 下一步要处理的就是客户端, 客户端运行在各个系统平台上, 比如: 苹果电脑, Windows电脑, Android手机, 苹果手机, 平板电脑(如何各种安卓的平板), 安卓电视, 安卓的机顶盒等等

客户端其主要几类的操作系统有: Linux, Mac, Windows, Android, Debian. 基本涵盖了主要几类大众常用的软硬件平台.

为何需要自行编译客户端?

由于rustdesk太好用, 导致有一些非法分子来利用rustdesk进行诱导性的‘远程协助’; 直接下载rustdesk官方的客户端(默认连接特定的官方服务器)已经无法使用(因为官方的服务器地址出于某些非技术性原因被ban了). 就需要通过配置rustdesk的ID服务器等信息, 让客户端都去连接自建的服务器(也就是上文中详细讲述的docker自建rustdeskID和relay服务器)

如何自行编译rustdesk客户端?

理论步骤: 从源头的rustdesk 以及其嵌套的子项目 libs/hbb_cmmon. clone, 并修改代码中的ID服务器地址和Key信息; 如果您的ISP封锁了您公网IP的默认端口11116, 11117, 11118, 11119的话, 您可以修改切换一些其他的端口.

其他的修改, 可以根据个人的需求来展开实现;

修改的步骤如下:

  1. 根据您自建的rustdesk服务器具体情况, 修改配置文件/libs/hbb_common/src/config/rs的103行- 109行.

image-20260108085844046

  1. git comment 和 push 把修改的最新代码提交到github进行编译

    当然也可以通过本地计算机进行编译, 过程比较繁琐; 不是资深开发头脑思维的, 不建议采用该本机编译方案

  2. 完成上面2步骤以后; 就是设置github的action来进行 云编译; 让github在远程服务器完成最新代码的编译工作, 最终生成各个平台的可执行文件; 有了rustdesk客户端后就可以发给远程协助的对方, 进行远程协助操作.

  3. 设置当前Github项目Settings 》 Actions 〉 Genernal 》 Actions permissions

    1. 选择Allow all actions and reusable workflows
  4. Settings 》 Actions 〉 Genernal 》Workflow permissions

    1. 选择Read and write permissions
    2. 勾选Allow GitHub Actions to create and approve pull requests
  5. 分别都保存

  6. 开启当前Github项目Actions

    1. Enable Workflows
  7. 手动运行 Flutter Tag Build

image-20260108094014865

使用Flutter Tag Build的好处是, 运行1个小时多后; 可以在项目的Releases, 下载到Tag的 Assets可以找到安卓手机的APK安装文件, windows的exe运行文件, Mac苹果电脑的dmg安装文件, Debian的deb安装包.

5. parsec

no.

6. frp方案

厉害了 (从rustdesk无人值守,入口找到的个人站)
https://zsxwz.com/
https://shop.zsxwz.shop

如何配置域名访问?反代?

7. 手机上VNC服务端可从F-Droid下载droidvnc-ng开启服务

https://www.bilibili.com/read/cv21492779/
被控端B: frpc穿透后,用droidvnc-ng开启vnc服务

这个方案的尴尬之处在于:随着Android版本升级,安全性的提高,导致开启vnc服务需要跨越的系统级障碍增加。

于是各路APP都在想办法在非root的情况下开启远程桌面服务:VNC server app for Android that does not require root privileges.

测试中:https://github.com/yrom/ScreenRecorder

Implement screen capture without root on Android 5.0+ by using MediaProjectionManager, VirtualDisplay, AudioRecord, MediaCodec and MediaMuxer APIs

8. 用scrcpy连接Android调试功能实现远程控制

详见:安卓手机投屏至电脑, 电脑显示和控制安卓手机, 手机电脑同屏软件Scrcpy-CarlZeng

9. hsslive.cn 测试

切换服务到: https://desk.hsslive.cn/#/ (作者: https://github.com/galaxy-s10)

免费流畅的远程体验基于WebRTC+Flutter+Vue3+Nodejs

实现电脑对电脑, 电脑对手机, 甚至可以手机对电脑的远程控制

(类似于todesk, 或 向日葵功能); 下载: https://desk.hsslive.cn/#/release

免费方案,是作者推荐的方案:BilldDesk Pro + 自建中继服务器。即直接使用现有的 BilldDesk Pro,自己再额外部署一个中继服务器,然后在 BilldDesk Pro 里面使用自建的中继服务器。这样优点是不使用官方的共享服务器,享受独立的中继服务器,远程控制更流畅。

测试后放弃该方案, 原因:

  1. 下载客户端的链接是各种网盘, (很不正式, github上的版本太久, 下载下来又提示强制更新)
  2. 客户端也要注册用户, 这个步骤对于‘懒人’用户不友好, 不主控的话, 别强制注册, 自动一下呢?
  3. 界面用的词语不恰当: 主控, 被控; 不适合我的应用场景; 给客户不安全感

个性化需求沟通 扫客服加V加群: