Android adb 调试,不在手机上点击信任 “允许usb调试” 即可连接的方式(手机需root)
前言
不知道大家有没有被这玩意儿困扰过,第一次插上手机进行 adb
调试的时候,总会弹出 “允许usb调试” 的弹窗。
这手机明明就在我的手上,为什么还要弹出这个信任框呢,这不是多此一举吗?
一个场景:我现在有一台 Android
电视,通过网络 adb
进行连接,但是同一局域网内有不止我自己一台电脑,这时候如果没有这个权限校验,那任何该网络下的设备都可以连接到这个电视,那就保不准会干些什么坏事了。
如何直接信任
本文介绍的方式,有一个非常重要的前置条件,就是手机得有 Root
权限。
本文测试电脑 win 10
,测试手机 一加7pro OnePlus GM1910 (Android 10)
。
具体方式:将当前设备上的 adbkey.pub
中的内容放入手机的 adb_keys
文件中(注意:adb_keys
文件的权限&&所属用户/组)。
adbkey.pub
文件路径
linux/mac: ~/.android/adbkey.pub
windows: %USERPROFILE%/.android/adbkey.pub
adbkey.pub(windows)
文件内容示例:
QAAAAG8Hqu5xyByP5u7KnIhZ9J/pS9mMf049HNSvtvPunLDsSlUfSSlymdwA0tSQ9QeOHPW7E+m2cmDbpbHNpzsdpvMY+aBuOIYoiSqFizXPlHC8lms0qeU8rTGgjv4FaKMnzvK5MRuhLjOswDJlB+eEhWVHQTCVTlrxwzRY2rgRYJ/+rcU9NPYnUWiSl6eIZmE2RLPvRxGXPM8pmcY6UxJ/cQ/OHH8OQrKxlSRuq48dFUNKiGcHMW/CJXGbSpTufb+iHZZattArB31uCBvvucYSe5w/cQKqoqsbkGouo1rieTKmeySZzrOQTS71gz0vYyfe9cDTRMyq+GpDfZW/ZecPmh7dvVbNRN39FgKEGgusYfjyuQptUEAImS819RJ8lTF6oWt/2+UkS1BcyqVjvwqF+bhQKZoyE0WZggT4om5vfXlxh1K05iC+64bCKWaE+/NNys0Kv3McJ25qXO32w8GymSSM6SvI8YGOAZwKcQo0F/XzKfDaalksKt500VgrpvDtt4Ot40pus67fXCwxG2tos4bFROru4/Yp9iyb6Gw6E93sG17yqueunzxO7rVyIojrvh9pqCqglHhOtS8i7tEoUiM7NvF/HcWpLxPlWIYPp1GEu3NbY11I3wVrbe077ZyjCf4elmSOKa0E31MO1Gt+nZs2tERP16lO20LQrYomNg8bmz9kHgEAAQA= 用户名@主机名
adb_keys
文件路径
/data/misc/adb/adb_keys
adb_keys
文件内容同 adbkey.pub
,注意:如果手机信任了不止一台设备,每一行就是信任的设备的 adbkey.pub
中的内容,示例如下:
QAAAAG8Hqu5xyByP5u7KnIhZ9J/pS9mMf049HNSvtvPunLDsSlUfSSlymdwA0tSQ9QeOHPW7E+m2cmDbpbHNpzsdpvMY+aBuOIYoiSqFizXPlHC8lms0qeU8rTGgjv4FaKMnzvK5MRuhLjOswDJlB+eEhWVHQTCVTlrxwzRY2rgRYJ/+rcU9NPYnUWiSl6eIZmE2RLPvRxGXPM8pmcY6UxJ/cQ/OHH8OQrKxlSRuq48dFUNKiGcHMW/CJXGbSpTufb+iHZZattArB31uCBvvucYSe5w/cQKqoqsbkGouo1rieTKmeySZzrOQTS71gz0vYyfe9cDTRMyq+GpDfZW/ZecPmh7dvVbNRN39FgKEGgusYfjyuQptUEAImS819RJ8lTF6oWt/2+UkS1BcyqVjvwqF+bhQKZoyE0WZggT4om5vfXlxh1K05iC+64bCKWaE+/NNys0Kv3McJ25qXO32w8GymSSM6SvI8YGOAZwKcQo0F/XzKfDaalksKt500VgrpvDtt4Ot40pus67fXCwxG2tos4bFROru4/Yp9iyb6Gw6E93sG17yqueunzxO7rVyIojrvh9pqCqglHhOtS8i7tEoUiM7NvF/HcWpLxPlWIYPp1GEu3NbY11I3wVrbe077ZyjCf4elmSOKa0E31MO1Gt+nZs2tERP16lO20LQrYomNg8bmz9kHgEAAQA= 用户名@主机名
QAAAAAtY+nhdjLi3p5OUfrXZVLvJT34oV2mkjzR6OSKadbg2lAFaqOt337+z1eZbXibB9kzGcne5SkDOc/pEi7wLs+z0IOn+pzP1JuxzpFMvbmw0TvqonatLlviQyPQNWe5JAxg3iD6++n0c3mSF7MVBBWecEGcP+iYm8pubpsMwCHnJPor9K/3M2GFV4mOU7rTrJqWyA41Wlr0F2tclt7j2FBG8gRrXHSxes9RdW0tahgDbxw/hTmYxnGwkM2Y4FWw2gR/UNJRxE+rCWB8MkAGpJZcj9vLMHSfZxllswZukzuyKt51ITk+CiKTP/tzd2dJtfno1GHN4seHrft38JnBB2+y2NDPYAS8n0JNFDyPML7g8d7vTmDUlex7Cv3mBBHJu6sSbsnBJ5ABY0K79fQjpK87d9WwIx/u+XSOvyJR3RTTKeC8lJApKspADUuFtUP1cpNLpe6mwWl/74ZmMxmsFone8BVt5IdlcrJyZ8qyHE0e1ROtHfDExQQWwOVT830HjCo15s3b56eeFpUEJt5OBNfO522PFm2pH21aabAT50+XU+gdiDgfhFgpMphyQUdiEtnbztc4K4x0nTkZ8DP6a/7rI0kNMGvDL0/BHIi0gXyNPgJXBYsOIrQPMviQri+EIbRD8yslaiizjJJ4nGYjEk/AROFqiis2f2DL1KIciqdVqNgRmGAEAAQA= 用户名1@主机名1
adb_keys
文件权限
-rw-r----- 1 system shell 716 2025-01-16 10:26 adb_keys
# 当权限或用户不对时需更改
chmod 0640 adb_keys
chown 1000:2000 adb_keys
实际解决的问题
测试使用的 Root
手机比较少,需要做资源调配。
直接人工将手机传来传去,效率太低了,通过部署一台手机调度服务器来动态地做手机的分发(网络 adb
连接)。
用户将自己的 adbkey.pub
传到服务器,服务器将其写入手机的 adb_keys
文件,当用户不再使用手机时,清理 adb_keys
文件。
这里简单提一下如何进行 adb
网络调试。
- 手机和电脑在同一网段,并确保手机已开启“开发者选项”并启动“USB调试”。
- 通过
USB
数据线将手机连接至电脑,电脑上执行adb tcpip 5555
(前置步骤,用于打开网络adb调试)。 - 任何在该网段下的电脑都可以通过
adb connect <设备IP地址>:5555
进行adb
网络连接。
usb 调试的信任机制的原理
简单了解一下 usb
调试的信任机制的原理,包括密钥生成与交换、授权管理以及加密通信等环节。
1. 密钥生成与交换
当一台新的计算机尝试通过 adb
连接到 Android
设备时,会经历以下过程:
- 公私钥对生成:首次连接时,电脑上的
adb
工具会自动生成一对公私钥(位于~/.android/adbkey
为私钥,~/.android/adbkey.pub
为对应的公钥)。 - 发送公钥请求:计算机将自身的公钥发送给
Android
设备以请求建立信任关系。 - 用户确认信任:设备上会弹出一个对话框,询问用户是否信任这台试图连接的计算机。如果用户选择信任,则继续下一步;否则,连接被拒绝。
- 存储公钥:一旦用户确认信任,设备会将该计算机的公钥存储在其内部的
/data/misc/adb/adb_keys
文件中。此文件包含了所有已授权计算机的公钥列表。
2. 授权管理
- 查看已授权设备:虽然普通用户无法直接访问
/data/misc/adb/adb_keys
文件(除非拥有Root
权限),但可以通过开发者选项中的“撤销USB调试授权”功能来清除所有授权记录,从而强制下次连接时重新进行信任确认。 - 手动添加或删除信任:前提时设备具有
Root
权限,可以手动编辑adb_keys
文件来添加新的公钥或移除不再信任的计算机。
3. 加密通信
一旦建立了信任关系,所有后续的 adb
通信都将使用之前生成的密钥对进行加密,以确保数据传输的安全性。具体实现如下:
- 握手协议:在每次连接开始时,设备和计算机之间会执行一次握手协议,验证双方的身份。这个过程中使用了非对称加密技术,确保只有持有正确私钥的一方才能解密另一方发送的信息。
- 数据加密:除了身份验证外,实际的数据传输也会被加密处理。这意味着即使在网络监听的情况下,攻击者也无法轻易读取或篡改通过
adb
传输的数据内容。 - 完整性检查:为了进一步提高安全性,系统还会对传输的数据进行完整性检查,防止中间人攻击或其他形式的数据篡改行为。
4. 安全注意事项
尽管 adb
设计了一套较为完善的安全机制,但在使用过程中仍需注意以下几点:
- 谨慎授予信任:只对可信赖的计算机授予USB调试权限,避免因误信不可靠来源而导致的安全风险。
- 定期审查授权状态:尤其是对于共享设备或多用户环境,应定期检查并清理不必要的授权记录。
- 保持软件更新:确保使用的
adb
工具版本是最新的,以便及时获得最新的安全补丁和改进措施。
通过上述介绍,我们可以看出 adb
的 usb
调试信任机制不仅考虑到了便捷性,同时也兼顾了安全性,为用户提供了一个相对安全的开发和测试环境。
总结
本篇介绍了在对 Android
设备进行 adb
调试时,如何默认连接,不弹出“允许usb调试”的信任框。需要手机有 Root
权限,更改手机的 /data/misc/adb/adb_keys
文件可达到目的。
简单阐述了 usb
调试的信任机制的原理,其实就是使用非对称加密密钥来保证数据传输的可靠,通过手动的点击信任来确保设备可靠。
原文地址:https://blog.csdn.net/DisMisPres/article/details/145181909
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!