ハピタス登録で1,000円分になるURL
試す。
まずは接続される側
まずはAndoridからVPN(wireguard)に接続。
ドトールWindowsからAndroidに接続
$ adb -s 192.168.43.1:5555 shell
($ adb -s AndroidのIPアドレス:5555 shell)
$ ifconfig
Android内でVPN(wireguard)サーバへのトンネルができてるのが確認できる。
$ ping 10.100.0.1
よし。
次は接続に行く側
池袋の寮のラズパイ。こいつにadbを入れてAndroidにつなぎに行きたいわけだ。
このラズパイZeroから中継点である田舎のVPNサーバ(192.168.3.190)にssh接続するとポート転送でAndroid:5555に飛ぶという仕組み。
sshポート転送なのでわかりにくいのだが
ラズパイZeroにて
$ ssh -L 127.0.0.1:5555:AndroidにVPNから振られてるIP:5555 pi@中継VPNサーバのIP
$ ssh -L 127.0.0.1:5555:10.100.0.14:5555 pi@192.168.3.190
これで中継設定はできた。
あとはラズパイZeroでadbを使えるようにする
あっさり入った。
Androidに繋がるか?
うーん、ダメか?
Androidスマホ画面で許可したら認識できた!
素晴らしい!adb devicesで認識してる!
あとは unauthorizedだけクリアすればいい。
$ adb kill-server
してみる。
ついに接続できた!
超遠隔地へのadb shellが実現できた!(SIM通信+VPN+WiFi経由)
$ adb tcpip 5555
ってのは
$ adb kill-server して、通信ポートをtcpipの5555にして、adb start-serversしなおす一連のコマンドっぽい。
遠隔地間でスマホデータのバックアップ
AndroidをドトールWiFiに接続して、スマホ内の画像を池袋のラズパイからadbでpull(引き上げ)する。これがやりたかった
ギガ使わないようにドトールのWiFiに入りなおす。Windowsもスマホも両方。
池袋のラズパイZeroから
adbで接続。
これでいつでもスマホデータを自宅(池袋の寮)に引き上げできるわけだ。
ラズパイZeroにあるmp4をスマホに送り込んでみる
できた。最高すぎ。
ラズパイZeroにて
$ adb devices
$ adb -s AndroidのIPアドレス:ポート push 送りたい動画.mp4
つまり
$ adb -s Androidに繋がってる中継サーバ push 送りたい動画.mp4
つまり
$ adb -s Androidに繋がってる中継サーバに繋がってるラズパイZero自身のポートへ入り口localhost:5555 push 送りたい動画.mp4
つまり
$ adb -s localhost:5555 push gakki.mp4
サクっと転送できた!
これで東京のカフェのどこにいても、どのWiFiに繋いでいようが関係なく、コマンド一発で大量のファイルWiFi経由でスマホに受け渡しできる。最高すぎる。
追記
Androidスマホを再起動した後にもう一度adb connectしようとしたら Connection refused になってしまった。
この場合はいったんUSBで繋いでから
$ adb tcpip 5555
してWiFiモード(というかtcpipモード)にすると直る。