把之前的文章 Raspberry Pi4 Project - Android system用我的gx10做控制
用 SSH/ADB 遠端控制 Android 平板(Android on Raspberry Pi)完整記錄
這台「平板」其實是一台跑 Android 15 on Raspberry Pi 4 的開發機(aosp_rpi4,userdebug build),區域網路 IP 固定 192.168.1.254。它的特殊之處:
- Android 是 userdebug 版——有
su 0可以直接進 root - 系統內建 root sshd(不是 Termux 開的),port 22
- 金鑰放
/data/ssh/authorized_keys
本文記錄從 GX10 連到這台平板的完整步驟,以及過程中踩到的坑。
一、設備規格
| 項目 | 值 |
|---|---|
| 核心 | Raspberry Pi 4(ARM64), Android 15(userdebug) |
| Kernel | Linux 6.6 |
| 記憶體 | 7.6 GB |
| /data 分區 | 12 GB |
| IP | 192.168.1.254(wlan0) |
| SSH | port 22,root 金鑰登入 |
二、連線前的準備(GX10 端)
1. 安裝 ADB client
GX10 是 Ubuntu 24.04 ARM64,adb 套件依賴舊的 OpenSSL 1.0,直接裝會缺庫。解法:
- 從 Ubuntu bionic 的
android-tools-adb.deb 抽出 aarch64 的adb二進位 - 搭配 bionic 的
libssl1.0(放/tmp/ssl10/) - 建立
/home/gx/.local/bin/adb包裝腳本,執行時設LD_LIBRARY_PATH=/tmp/ssl10/ext/lib/aarch64-linux-gnu
2. 確認 SSH 金鑰
艦隊統一用 ~/.ssh/id_ed25519(同一支金鑰,所有設備)。
三、ADB 授權流程(最關鍵的一步)
adb devices -l
192.168.1.254:5555 device product:aosp_rpi4 model:Raspberry_Pi_4
坑: 第一次連上狀態是 offline,不是壞掉——是平板螢幕上彈著「允許從此電腦遠端調試嗎?」的對話框。
必做: 在平板上勾「永遠允許」→「允許」。否則永遠是 offline。(注意:離人時做這步會卡住,務必在平板前操作。)
四、找對 SSH 用戶(踩坑最多的部分)
坑 1:先試了十幾個用戶全被拒
pi / root / winson / user / shell / android ... 都 Permission denied。
解法:用 ADB 看 sshd 到底用誰跑
adb shell "ps -A | grep sshd -v grep"
root 2168 1 ... S sshd
→ sshd 是以 root 跑的。
坑 2:金鑰檔裡的公鑰「不是我的」
userdebug build 可以 su 0:
adb shell "su 0 sh -c 'wc -l /data/ssh/authorized_keys; cut -c1-40 /data/ssh/authorized_keys'"
檢查結果:檔裡有 5 支公鑰,沒有一支是 GX10 的——之前「已放金鑰」其實是另一台的。
坑 3:經 shell 貼多行文字會被轉義
解法:一律 base64 傳輸
KEY=$(cat ~/.ssh/id_ed25519.pub)
B64=$(printf '%s\n' "$KEY" | base64 -w0)
adb shell "su 0 sh -c 'echo $B64 | base64 -d >> /data/ssh/authorized_keys'"
放完立刻測:
ssh root@192.168.1.254 "id"
uid=0(root) gid=0(root)
✅ 成功。
五、使用方式
| 需求 | 指令 |
|---|---|
| SSH | ssh root@192.168.1.254(免密碼) |
| 裝 APK | adb install xxx.apk |
| 截圖 | adb exec-out screencap -p > screen.png |
| 進 root | 直接就是 root(免 su) |
| 看 log | adb logcat |
六、注意事項(重點整理)
- ADB 授權框要人在場——沒按允許就是永遠 offline;重開機/清資料後權限可能被清,要重新授權
- root sshd 是安全敏感點——這是 userdebug 開發機,金鑰檔
/data/ssh/authorized_keys等於 root 後門,只放自己人的公鑰;別用 password 登入 - 金鑰要對「這台」的金鑰檔核對——艦隊多台設備共用流程,但每台公鑰不同,放完一定要
ssh驗證一次,並對照cut -c1-40確認是自己這支 - userdebug 的特性:有
su 0、adb root可用,但不能當正式版用——升級 ROM、重刷後 sshd 服務可能不見 - IP 固定 192.168.1.254,走區網(wlan0),不在 Tailscale 上——GX10 須在區域網路內才連得到
- /data 只有 12G——裝模型/大檔案要挑,別當資料盤用
七、一句話總結
Android on Pi 平板 = ADB 授權(人在場)+ root sshd + 金鑰經 base64 放
/data/ssh/authorized_keys;userdebug 的su 0是找路徑的金鑰工具。放完公鑰先ssh root@192.168.1.254驗證,才算是真的接入艦隊。
沒有留言:
張貼留言