一、需求背景
在家庭网络中运行了一台常驻服务器,并在服务器上部署自动化代理。希望代理能够连接安卓手机,检查系统状态、读取输入法配置、收集日志,并在明确授权的情况下完成部分设置调整。
最初容易想到的是 SSH,因为服务器管理通常都依赖 SSH。但安卓手机并不是普通 Linux 服务器,直接照搬桌面 Linux 的远程管理方式,会遇到权限、应用沙箱和后台限制等问题。
因此,首先需要区分三类工具:
- SSH 客户端
- SSH 服务端
- Android Debug Bridge,也就是 ADB
这三者的用途完全不同。
二、SSH 客户端不能让服务器反向进入手机
手机上常见的 SSH 工具,多数只是 SSH 客户端。
它们适合以下方向:
安卓手机 → Linux 服务器
例如在外出时,用手机登录家里的服务器,查看服务状态或执行维护命令。
但自动化代理连接手机需要的是反方向:
Linux 服务器 → 安卓手机
SSH 客户端本身不会在手机上监听端口,因此不能让服务器主动登录手机。
如果确实希望通过 SSH 控制手机,需要在手机上另外安装能够提供 sshd 的环境,例如 Termux,并在其中安装 OpenSSH。
这种方式适合:
- 管理 Termux 自己的文件
- 使用 Python、Git、Shell 等 Linux 工具
- 处理共享存储中的文件
- 运行脚本和定时任务
但它不能自动突破 Android 应用沙箱,也不能直接读取其他应用的内部私有目录。
三、Termux SSH 与无线 ADB 的区别
Termux SSH 的控制范围主要是:
Termux 私有目录
共享存储中已授权的目录
Termux 安装的软件环境
无线 ADB 的控制范围则更偏向 Android 系统:
- 查询已安装应用
- 获取应用版本和安装来源
- 查看系统属性
- 执行
dumpsys - 获取
logcat - 查询输入法、权限和系统服务
- 安装或卸载应用
- 调整部分 AppOps 和特殊权限
- 截图
- 拉取共享存储和应用外部目录文件
因此,如果目标是让自动化代理检查安卓系统和输入法,优先选择无线 ADB更合适。
Termux SSH 更像是“手机里的 Linux 工作环境”,无线 ADB则更像是“Android 系统的维护接口”。
四、无线 ADB 的基本架构
推荐的结构如下:
安卓手机
│
│ 无线 ADB
▼
家庭服务器
│
▼
自动化代理
手机端不需要安装额外 ADB 应用,只需要 Android 系统自带的开发者选项。
服务器端只需要安装 ADB 命令行工具,不需要安装完整 Android Studio。
在基于 Ubuntu Server 的服务器上,可安装:
sudo apt update
sudo apt install adb
安装后验证:
adb version
五、手机端启用无线调试
首先启用开发者选项:
设置
→ 关于手机
→ 软件信息
→ 连续点击版本号
返回系统设置后进入:
开发者选项
→ 无线调试
启用无线调试后,可以看到两个不同用途的端口。
配对端口
点击“使用配对码配对设备”后,会显示:
手机局域网地址:临时配对端口
六位配对码
服务器执行:
adb pair <手机地址>:<配对端口>
输入手机显示的配对码。
连接端口
配对成功后,返回无线调试主页面,会显示另一组:
手机局域网地址:连接端口
服务器执行:
adb connect <手机地址>:<连接端口>
确认设备:
adb devices -l
成功时,设备状态应为:
device
六、为什么配对端口和连接端口不同
无线 ADB 使用了两套临时端口:
- 一套用于建立信任关系
- 一套用于实际调试连接
配对通常只需要完成一次,但连接端口可能在以下情况后变化:
- 关闭并重新开启无线调试
- 手机重启
- 切换无线网络
- 系统重新分配调试服务端口
因此,下次恢复连接时,通常不需要重新配对,只需要查看新的连接端口并再次执行:
adb connect <手机地址>:<新端口>
七、建立代理操作边界
自动化代理获得 ADB 能力后,必须明确区分三类任务。
只读任务
包括:
- 查看系统属性
- 查询应用清单
- 检查权限
- 收集日志
- 获取配置文件
- 统计文件元数据
- 截图
- APK 静态分析
这类任务风险较低,适合作为默认模式。
可回滚修改
包括:
- 调整单项 AppOps
- 停用指定应用
- 修改外部配置文件
- 删除明确指定的残留文件
- 切换某个特殊访问权限
这类任务必须先记录修改前状态,并提供回滚方式。
高风险操作
包括:
- 清除应用数据
- 批量卸载系统应用
- 修改设备策略
- Root
- 解锁 Bootloader
- 修改 SELinux
- 删除整个配置目录
这类操作不应由代理自行执行。
八、推荐的代理指令结构
给自动化代理的任务指令应明确包含:
目标设备
连接方式
允许操作
禁止操作
输出目录
备份要求
验证方法
回滚方法
最终报告格式
不要只说“帮忙检查手机”。
更合理的任务表达是:
通过当前无线 ADB 连接,对目标安卓设备执行只读检查。
不得清除数据、卸载应用或修改设置。
所有原始证据保存到指定目录。
如果需要修改,必须先停止并报告原因。
无论工具是否报错,都必须输出阶段性结论。
九、无线 ADB 的安全注意事项
无线调试本质上是高权限维护入口。
使用过程中应注意:
- 只在可信局域网中开启
- 不在公共 Wi-Fi 中启用
- 不将调试端口转发到公网
- 审计结束后关闭无线调试
- 定期检查已配对设备
- 不长期保持手机处于调试状态
- 不把 ADB 密钥复制到不可信主机
无线调试端口通常是临时端口,不等于固定开放的远程服务。
如果没有发现固定 5555 监听,也没有公网转发,通常不属于长期暴露。
十、实践结论
对于“家庭服务器上的自动化代理需要检查安卓手机”这一需求,最合适的组合是:
无线 ADB:系统审计、日志、权限和设置
Termux SSH:脚本、文件处理和 Linux 工具
SSH 客户端:手机主动维护服务器
三者并不互相替代。
无线 ADB 解决的是 Android 系统层问题,Termux SSH 解决的是用户态 Linux 环境问题,而普通 SSH 客户端只负责从手机连接其他设备。
在不 Root 的前提下,这种架构已经能够完成相当深入的安卓诊断,同时保留 Android 应用沙箱和系统安全边界。