AndroidスマホからMacBookにssh接続する

個人開発の際にClaude Code を利用している。
Android15からlinuxターミナルを利用できるようになったという話を聞き、スマホからリモート操作できればスマホからでもClaude Codeで開発できるのでは?と思い、スマホからリモートアクセスする環境構築してみたログ。
1. Androidにlinux terminal アプリを入れる
android側にターミナルアプリを入れます。
androidからの操作はこのターミナルを介して行います。
2. MacBookでリモートログインを有効化する
スマホからログインしたい対象のMacBookのリモートログインを有効化しておきます。
これをしないとリモートログインすることができません。
3. Androidにopenssh-clientをインストールする
ここまでやれば、sshコマンドを使ってパスワードでログイン可能になる。
4. 公開鍵・秘密鍵を使って楽にログインする
必要な手順は以下
-
ssh-keygen
コマンドでクライアント側に公開鍵と秘密鍵のキーペアを生成 -
ssh-copy-id
コマンドでリモート側に公開鍵を登録 - (必要に応じて)configファイルを設定して簡単にログインできるようにする
参考
全般
ssh-keygen のオプション
コマンドリファレンス
ゴールから試してみる
以下Androidのターミナル上の操作
Androidのターミナルからsshログインしてみよう
→ssh がインストールされてない
$ ssh <username>@<hostname>
-bash: ssh: command not found
sshのインストール
じゃあsshをインストールしなきゃ
パッケージマネージャってどれが入ってるんだろうか...
ターミナル起動時にDebian 6.1.135-1
の記述があったので検索。
Debianのパッケージ管理ツールについての記述を発見。
aptはインストールされてる?
→インストールされている
$ apt --version
apt 2.6.1 (arm64)
aptからsshをインストール
// クライアント側なのでopenssh-clientをインストール。
$ sudo apt install openssh-client
// 以下のエラーが発生した
E: unable to locate package openssh-client
// パッケージの参照が古くなっているのが原因のようなのでupdate
$ sudo apt update
// 更新成功
$ sudo apt install openssh-client
// インストール完了
$ ssh
// sshコマンドのオプション
sshをインストールできたので、sshログインしてみる
→接続拒否
$ ssh <username>@<hostname>
ssh: connect to host <hostname> port 22: Connnection refused
想定通り。
続いてmacの設定からリモートログインを許可する。
許可後、sshログインを再実行。
パスワードの入力を求められるので入力するとログイン成功
$ ssh <username>@<hostname>
Password:
ssh config ファイルにhostnameとusernameの入力を楽にする
ssh接続情報をconfigファイルに記述してログインを楽にする。
以下のように~/.ssh/config
を作成する。
Host <任意の名前>
HostName <hostname>
User <username>
すると次のようにしてsshログインできるようになる。
$ ssh <Host>
ただしまだパスワードの入力が必要
$ ssh <Host>
Password:
ログイン形式をssh key認証方式に変更してパスワードも不要にする
ssh認証キーを作成する
// 秘密鍵と公開鍵のキーペア作成
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/<key名>
// 以下のファイル名で秘密鍵と公開鍵が作成される
// - 秘密鍵:<key名>
// - 公開鍵:<key名>.pub
// 公開鍵をリモートログインされる側に登録
$ ssh-copy-id -i <key名>.pub <Host>
Password:
※ssh-copy-id
コマンドはリモートに公開鍵を登録するコマンド。
ssh-copy-id
が成功すると、リモート側の~/.ssh/authorized_keys
に<key名>.pub
が追加される。
以下のようにconfigファイルにIdentityFileを追加する
Host <任意の名前>
HostName <hostname>
User <username>
IdentityFile ~/.ssh/<key名>
この状態で改めてsshログインを試みる
$ ssh <Host>
// ログイン成功