如何从私钥中获取adbkey.pub?
How to obtain adbkey.pub from the private key?
我正在尝试制作一个脚本来控制农场中的 android 设备,adb connect
通过 OpenSTF 建立连接。设备接受来自客户端的连接的要求之一是在 OpenSTF 中提供 adbkey.pub 的内容。
但是,新版本的ADB似乎不再生成这个文件,只生成私钥。从我可以从 AOSP 存储库中收集到的信息来看,这是故意的 https://github.com/aosp-mirror/platform_system_core/commit/2dc4cabe0639c71014d729dd92eff19289429c89
查看 AOSP 提交后,我意识到 ADB 密钥对是使用 RSA 协议生成的,并且我找到了如何从私有 in this Stack Exchange question 获取 public 密钥的示例。但是,OpenSSL 输出的 public 密钥格式与 adbkey.pub 不同。起初我以为它只是用 base64 编码,但即使这样输出也不匹配。
这是来自 adb keygen
使用旧版本 ADB 的 ADB public 密钥示例。
QAAAAFNrmDYl72IeYbMQiOlKulhv2lH3CKyeK6EgwyUxptsdPmvCCRmxtvecilLzE74OzoRVQKZeCBI/qMnWj1hBU8t6YE0FQ1CUKAFO5UYp/S7GH/+tlHKunl/mmm/Izjs4L6ajl+kp3XBBrYryIJtRH5iJRi9T96gRq2ya+h9v/v/ITNvdCKLNVObBCLCj+4fmkoxVEXnSLyQtyPAl/AiMAiK/WXryatNkuBdAr6m9M/ay693Oj07I3UFxLqzwHhoeb2CZzC0//AwUDgRHtyxDyrAKaoxirhoaJ4Q8Tbn6jRtOaV0uvtCBfs4kIUoM/DLPfjZq8Al8PHPuEwvOMaAGF+JSXHywjWfstcxT3c7xjn2Zq19R4kuf63dfEqtv+NA/PhH94oMQtiZsp92JpT0h22tWAoQAF9jr2puwVzMj8i/k0iDLMRnp/5E6UVsziP8PG9DgIpeTjL2NMjE0Kheq+CufIozhcvGudg+MJaJED4XHK7hQrU0QCvu1kOqO+/VtW4zmTCfg8nY556A73vtllrMLsG2OgZTyQT0SrBOBd2AaYOB90l7//hlfpqAA8XANG0MHkyPsi/xtKga6Zsu+a2L9Hl2rUWNB6T9AEmyzmapCMUBilAuNtZ+Pt9esqzD9+/aKSIHdUu1gPKZtKTgh+pqYNgyipq0UMWpexkZfpMsLTddGIgEAAQA= carolinadp@carolinadp-GL62M-7RD
这是一个 public 使用 OpenSSL 从同一个私钥生成的密钥
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsHxcUuIXBqAxzgsT7nM8
fAnwajZ+zzL8DEohJM5+gdC+Ll1pThuN+rlNPIQnGhquYoxqCrDKQyy3RwQOFAz8
Py3MmWBvHhoe8KwucUHdyE6Pzt3rsvYzvamvQBe4ZNNq8npZvyICjAj8JfDILSQv
0nkRVYyS5of7o7AIweZUzaII3dtMyP/+bx/6mmyrEaj3Uy9GiZgfUZsg8oqtQXDd
KemXo6YvODvOyG+a5l+ernKUrf8fxi79KUblTgEolFBDBU1gestTQViP1smoPxII
XqZAVYTODr4T81KKnPe2sRkJwms+HdumMSXDIKErnqwI91Hab1i6SumIELNhHmLv
JQIDAQAB
-----END PUBLIC KEY-----
如何获取 ADB public 密钥?
您可以使用 ssh-keygen 从您的私钥中检索 public 密钥,如下所示:
ssh-keygen -y -f adbkey > adbkey.pub
也许您需要从生成的公钥文件中删除“ssh-rsa”。
我认为您应该使用 adb 生成新的私有和 public 密钥对(假设 linux):
cp ~/.android/adbkey ~/.android/adbkey.bak (backup existing key)
rm ~/.android/adbkey
cd $ANDROID_HOME/platform-tools
./adb keygen adb
注意:
我假设您在要生成 adbkey.pub 的机器上设置了 android sdk,因此现有的 $ANDROID_HOME 路径
当我的 adb 版本升级到版本 28.0.2-5303910 时,OpenSTF 出现 "Connection refused" 问题(所以 adbkey.pub 消失了)
Android Debug Bridge version 1.0.40
Version 28.0.2-5303910
现在终于把adb升级到最新版本解决了
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
希望对您有所帮助。
我正在尝试制作一个脚本来控制农场中的 android 设备,adb connect
通过 OpenSTF 建立连接。设备接受来自客户端的连接的要求之一是在 OpenSTF 中提供 adbkey.pub 的内容。
但是,新版本的ADB似乎不再生成这个文件,只生成私钥。从我可以从 AOSP 存储库中收集到的信息来看,这是故意的 https://github.com/aosp-mirror/platform_system_core/commit/2dc4cabe0639c71014d729dd92eff19289429c89
查看 AOSP 提交后,我意识到 ADB 密钥对是使用 RSA 协议生成的,并且我找到了如何从私有 in this Stack Exchange question 获取 public 密钥的示例。但是,OpenSSL 输出的 public 密钥格式与 adbkey.pub 不同。起初我以为它只是用 base64 编码,但即使这样输出也不匹配。
这是来自 adb keygen
使用旧版本 ADB 的 ADB public 密钥示例。
QAAAAFNrmDYl72IeYbMQiOlKulhv2lH3CKyeK6EgwyUxptsdPmvCCRmxtvecilLzE74OzoRVQKZeCBI/qMnWj1hBU8t6YE0FQ1CUKAFO5UYp/S7GH/+tlHKunl/mmm/Izjs4L6ajl+kp3XBBrYryIJtRH5iJRi9T96gRq2ya+h9v/v/ITNvdCKLNVObBCLCj+4fmkoxVEXnSLyQtyPAl/AiMAiK/WXryatNkuBdAr6m9M/ay693Oj07I3UFxLqzwHhoeb2CZzC0//AwUDgRHtyxDyrAKaoxirhoaJ4Q8Tbn6jRtOaV0uvtCBfs4kIUoM/DLPfjZq8Al8PHPuEwvOMaAGF+JSXHywjWfstcxT3c7xjn2Zq19R4kuf63dfEqtv+NA/PhH94oMQtiZsp92JpT0h22tWAoQAF9jr2puwVzMj8i/k0iDLMRnp/5E6UVsziP8PG9DgIpeTjL2NMjE0Kheq+CufIozhcvGudg+MJaJED4XHK7hQrU0QCvu1kOqO+/VtW4zmTCfg8nY556A73vtllrMLsG2OgZTyQT0SrBOBd2AaYOB90l7//hlfpqAA8XANG0MHkyPsi/xtKga6Zsu+a2L9Hl2rUWNB6T9AEmyzmapCMUBilAuNtZ+Pt9esqzD9+/aKSIHdUu1gPKZtKTgh+pqYNgyipq0UMWpexkZfpMsLTddGIgEAAQA= carolinadp@carolinadp-GL62M-7RD
这是一个 public 使用 OpenSSL 从同一个私钥生成的密钥
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsHxcUuIXBqAxzgsT7nM8
fAnwajZ+zzL8DEohJM5+gdC+Ll1pThuN+rlNPIQnGhquYoxqCrDKQyy3RwQOFAz8
Py3MmWBvHhoe8KwucUHdyE6Pzt3rsvYzvamvQBe4ZNNq8npZvyICjAj8JfDILSQv
0nkRVYyS5of7o7AIweZUzaII3dtMyP/+bx/6mmyrEaj3Uy9GiZgfUZsg8oqtQXDd
KemXo6YvODvOyG+a5l+ernKUrf8fxi79KUblTgEolFBDBU1gestTQViP1smoPxII
XqZAVYTODr4T81KKnPe2sRkJwms+HdumMSXDIKErnqwI91Hab1i6SumIELNhHmLv
JQIDAQAB
-----END PUBLIC KEY-----
如何获取 ADB public 密钥?
您可以使用 ssh-keygen 从您的私钥中检索 public 密钥,如下所示:
ssh-keygen -y -f adbkey > adbkey.pub
也许您需要从生成的公钥文件中删除“ssh-rsa”。
我认为您应该使用 adb 生成新的私有和 public 密钥对(假设 linux):
cp ~/.android/adbkey ~/.android/adbkey.bak (backup existing key)
rm ~/.android/adbkey
cd $ANDROID_HOME/platform-tools
./adb keygen adb
注意: 我假设您在要生成 adbkey.pub 的机器上设置了 android sdk,因此现有的 $ANDROID_HOME 路径
当我的 adb 版本升级到版本 28.0.2-5303910 时,OpenSTF 出现 "Connection refused" 问题(所以 adbkey.pub 消失了)
Android Debug Bridge version 1.0.40
Version 28.0.2-5303910
现在终于把adb升级到最新版本解决了
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
希望对您有所帮助。