一、需求背景

在家庭网络中运行了一台常驻服务器,并在服务器上部署自动化代理。希望代理能够连接安卓手机,检查系统状态、读取输入法配置、收集日志,并在明确授权的情况下完成部分设置调整。

最初容易想到的是 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 应用沙箱和系统安全边界。

Leave a Reply

Your email address will not be published. Required fields are marked *