近期在做某项目时,需要在多把手机上跑矩阵账号,有需要时不时登陆到手机上做一些操作的需求,于是就开始研究如何在 iPhone 上低成本地远程操控其他的安卓手机
市面上其实已经有不少成熟的商业软件在做这个事情,但是使用是需要付费的,如果不想多花钱呢,可以使用开源的 RustDesk ,RustDesk 允许自建服务器来实现远程控制手机,而且对于服务器的要求不高,1c1g 的服务器就可以支撑一个小型工作室的远程需求。对于几乎人手一台服务器的开发者来说,自建 RustDesk 就可以满足 成本远程需求。
1. RustDesk 介绍
与 TeamViewer、ToDesk 等专有远程访问解决方案相比,RustDesk 作为一个开源软件,提供了几个显著的优势:
- RustDesk 完全免费使用,没有任何隐藏费用或订阅计划。
- 由于其开源特性,RustDesk 的代码是透明的,可以由社区审计,从而提供更高的安全性和可信度。
- RustDesk 使用 Rust 语言开发,从根本上确保了程序的内存安全和高性能。
- 跨平台,支持 Windows、macOS、Linux、Android 和 iOS 等多种操作系统。
- 支持远程唤醒机器,真正做到想连就连,无人值守
然而现在有一个坏消息:由于被zp分子频繁使用,该项目现已暂停国内服务。
如果需要在国内使用,就只能走自建节点这一条路啦~
所谓自建服务器,也就是自建 ID Server 和 Relay Server,至于什么是 ID Server 和 Relay Server,下面我们会给大家详细介绍,并提供一步步的指南来帮助你设置自己的 ID Server 和 Relay Server。
2. RustDesk 架构
要自建 RustDesk,首先要理解下 RustDesk 的架构。RustDesk 由三个组件组成:
-
客户端:运行在你的设备上(Windows,macOS,Linux,Android, iPhone)用于连接两个设备的软件,它负责监听来自客户端的连接请求,并在建立连接后向客户端发送屏幕更新和接收输入事件。
-
中继服务器(Relay Server):运行在服务器上,充当客户端之间的桥梁,转发来自一方的数据包到另一方。在某些环境中(如经过 NAT 出网)设备之间无法进行 P2P 连接,可以用服务器来中转
-
ID 服务器(ID Server):运行在服务器上,用于维护客户端及中继服务器的连接信息,促进设备之间建立 P2P 连接。
值得一提的是,即使通过 Relay Server 进行通信,RustDesk 也会维护端到端加密,确保中继服务器无法访问明文数据。Relay Server 只是盲目地转发加密的数据包,而不能查看或修改其内容。
3. RustDesk 部署
3.1 准备服务器
需要将 RustDesk 部署于公网的服务器上,因此在开始部署前,请先准备一台服务器,规格要求不高,1c2g 即可满足。
如果自己还没有服务器的,可购买一个,新用户都优惠很大,几十块钱一年还是挺划算的。
最近大行情不好,各大云厂商也一直在打折促销,在可以点我下面的链接领个卷再去购买比较划算
- 阿里云:iswbm.com/alicloud
- 腾讯云:iswbm.com/txcloud
- Ucloud:iswbm.com/ucloud
3.2 开始部署
接下来的操作都要在服务器上操作了,先在服务器上前往 github (github.com/rustdesk/ru... rustdesk
shell
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip
unzip rustdesk-server-linux-amd64.zip
解压完会出现三个文件,其中:
- hbbs: 对应前面说的 ID Server,用于分配和注册ID;
- hbbr: 对应前面说的Relay Server,如果P2P无法连接,会使用hbbr进行流量中继。
接下来需要将 hbbr 和 hbbs 启动起来,在服务器启动二进制文件做为服务运行有许多种方式,如:
- nohup:将二进制程序挂载在后台
- Service:使用 systemd 来管理
- screen:使用 screen 来管理,即使当前会话退出,进程也不会中断
最优雅的方式应该是使用 systemd 管理,但是需要编写 Service 文件。
这里我使用常用的 screen 来运行,请确保你的服务器上已经安装 screen 工具
shell
yum install screen -y
然后用如下命令创建一个 hbbr 的会话空间,并启动 hbbr
shell
# 创建 hbbr 会话空间
screen -R hbbr
# 启动 hbbr
./hbbr
然后再按快捷键 ctrl+a+d
,分离会话
再创建一个 hbbs 的会话空间,并启动 hbbs
shell
# 创建 hbbs 会话空间
screen -R hbbs
# 启动 hbbr
./hbbs
启动过程中,请注意记录下日志中的 key
同样再按快捷键 ctrl+a+d
,分离会话
分离会话之后,可以通过如下方法查看会话列表,并再次进入会话
3.3 域名解析
为了给工作室里的其他人使用时更方便操作连接,而不需要记 ip,建议可以搞一个二级域名然后解析到服务器上
3.4 防火墙开放端口
默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。
在开始使用前,请务必在服务器控制台上的防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。其中21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 21118和21119是为了支持网页客户端。如果您不需要网页客户端(21118,21119 )支持,对应端口可以不开。
- TCP(21115, 21116, 21117, 21118, 21119)
- UDP(21116)
4. 连接验证
服务端搭建好后,在要连接的两个设备里都 下载 RustDesk 客户端,地址是:github.com/rustdesk/ru...
下面以 Android 为例(注意 iPhone 只能是主控,不能被控)
首先找到 RustDesk 客户端的 设置
-> ID/中继服务器
,然后输入如下两个信息
- ID 服务器:
{domain}:21116
- Key:前面记录的那个 key
然后打开 保持 RustDesk 后台服务
和 开机自启动
,以确保进程不会被杀掉
切换到 共享屏幕
启动服务,并且要打开 输入控制
否则只能查看屏幕无法控制,启动服务后,就可以用设备提示的 ID 和一次性密码在主控上输入进行连接,不过为后续更方便无人值守连接,可以在客户端为设备固定密码,然后在主控上用固定密码连接,注意点保存密码,下次就可以直接连接了~