序言:使用Android Studio并将我的“Hello World”应用推送到手机,我收到了一个确认对话框:
允许USB调试?
计算机的RSA密钥指纹是:
<some_md5_fingerprint>
[]始终允许从此计算机
取消确定
虽然我很确定这是我的机器试图连接,但我问自己如何确认。
这引发了另外两个具体问题:
此外,我想要一个广泛使用的答案,因此解决方案应该适用于每个Windows(在我的情况下为win7)用户,而无需安装软件。
答案 0 :(得分:1)
我正在使用cmd
及其for
循环以及certUtil
这些都应预先安装。
按
打开cmd
cmd
然后确认,或cmd.exe
并执行。<强> TLDR 强>
for /F "tokens=2" %a in (id_rsa.pub) DO (echo %a) > tmp.key_base64
certUtil -decode tmp.key_base64 tmp.key_bytes
certUtil -hashfile tmp.key_bytes MD5
RSA公钥在哪里?
通常,密钥保存在用户家中的.ssh
目录中。
(Android Studio将不同的(!)键adbkey.pub
存储在用户主目录下的目录.android
中,并在其安装目录中C:\Android\.android
- 两个密钥都发布到在上述序言中提到的过程中电话。)
打开控制台后,您应该已经在主目录中,只需要更改为.ssh
C:\Users\%USERNAME%>cd .ssh
如果您不在主目录中,请输入
cd \Users\%USERNAME%\.ssh
并执行。
(对于Android Studio,分别将目录更改为\Users\%USERNAME%\.android
或\Android\.android
。)
如何获取RSA公钥的MD5指纹?
为此,我需要知道文件中的实际密钥是base64编码的部分,即long cryptic string of characters。在我的情况下,键字段后面总是跟着用户 - 主机字段,即类似user@domain.com
(也是unknown@unknown
)的字符串,在某些字符串中案例前面有一个包含ssh-rsa
的字段。
在后一种情况下,我需要过滤第二个字段。在Windows中,显然,这是使用for
循环完成的。我还将输出发送到文件以便certUtil
进行后续消解,其输出再次进入文件 - 包含不再是base64编码但以字节为单位的密钥 - 最后使用MD5进行哈希处理。
将id_rsa.pub
的第二个字段中的密钥提取到名为tmp.key_base64
的文件中:
for /F "tokens=2" %a in (id_rsa.pub) DO (echo %a) > tmp.key_base64
(Android Studio adbkey.pub
的第一个字段:"tokens=1"
)
Base64解码以接收文件tmp.key_bytes
中的实际公钥:
certUtil -decode tmp.key_base64 tmp.key_bytes
使用MD5散列密钥:
certUtil -hashfile tmp.key_bytes MD5