【Claude Codeチャレンジ日誌3】スマホ(Android)からWindowsWSL内のClaude Codeにリモート接続する
外出先でもスマートフォンからClaude Codeをさわりたいなーということで、ClaudeOpsと相談しながら試行錯誤して、AndroidのTermiusアプリを使ってWindows 11-PCのWSL環境で動作するClaude Codeにリモート接続することができたので、対応した内容をまとめました。
参考になれば幸いです。
前提条件
既にインストール済み
- Windows 11 + WSL2 Ubuntu
- Claude Code (
claude --version
で確認可能) - Node.js (
node --version
で確認可能) - Anthropic Claudeアカウント設定済み
追加で必要
- 管理者権限でのPowerShellアクセス
- Androidスマートフォン
- 家庭用ルーターの管理者権限
アーキテクチャ概要
ネットワーク構成とポートフォワーディングの流れ
※記載してあるIPやポート番号はあくまで例なので、適宜読み替えてください。
2段階ポート転送の詳細
段階 | 転送場所 | ポート変換 | 説明 |
---|---|---|---|
1 | 家庭用ルーター | 12345 → 12345 | 外部からのアクセスをWindows PCに転送 |
2 | Windows PC | 12345 → 2222 | ポートプロキシでWSL内のSSHサーバーに転送 |
3 | WSL Ubuntu | 2222 | SSHサーバーがClaude Codeにアクセス |
重要: ルーターは同じポート番号で転送し、Windows PC内でポートプロキシが最終的にWSLの2222番に変換します。
データの流れ: 外部からの12345番ポートアクセスが、最終的にWSL内のSSHサーバー(2222番)に転送され、Claude Codeにアクセスできる仕組みです。
Step 1: SSH Serverの設定
1.1 OpenSSH Serverのインストール
WSL Ubuntu内で実行:
sudo apt update
sudo apt install openssh-server
1.2 SSH設定の変更
セキュリティのため、デフォルトポートから変更します:
sudo nano /etc/ssh/sshd_config
以下の設定を変更:
Port 2222 # デフォルトの22から変更
ListenAddress 0.0.0.0
PermitRootLogin no
PasswordAuthentication yes # 初期設定として(後でSSH鍵認証に変更)
PubkeyAuthentication yes
MaxAuthTries 3
1.3 SSH Serviceの開始と自動起動設定
# サービス開始
sudo service ssh start
# systemdが有効な場合の自動起動設定
sudo systemctl enable ssh
# systemdが無効な場合の自動起動設定
echo 'sudo service ssh start' >> ~/.bashrc
1.4 SSH接続の動作確認
# ローカル接続テスト
ssh your-username@localhost -p 2222
パスワードを入力して正常に接続できることを確認します。
Step 2: SSH鍵認証の設定
2.1 SSH鍵ペアの生成
WSL Ubuntu内で実行:
# SSH鍵ペア生成
ssh-keygen -t rsa -b 4096 -C "termius-android"
# Enterを3回押して進む(パスフレーズは空でOK)
2.2 公開鍵の設定
# .sshディレクトリに移動
cd ~/.ssh
# 公開鍵をauthorized_keysに追加
cat id_rsa.pub >> authorized_keys
# 適切な権限を設定
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
2.3 秘密鍵の確認とコピー
Termius設定用に秘密鍵をコピー:
cat ~/.ssh/id_rsa
この出力をコピーします(-----BEGIN OPENSSH PRIVATE KEY-----
から -----END OPENSSH PRIVATE KEY-----
まで全て)
Step 3: Windows側のネットワーク設定
3.1 WSLのIPアドレス確認
WSL Ubuntu内で実行:
hostname -I
例:172.20.112.58
のようなIPアドレスをメモします。
3.2 Windows PowerShellでの設定
管理者権限のPowerShellで以下を実行:
ファイアウォール設定
New-NetFirewallRule -Name sshd-claude -DisplayName 'SSH for Claude Code' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 12345
ポートプロキシ設定
# WSL2のIPアドレスを変数に格納
$wslIP = (wsl hostname -I).Trim()
# ポートフォワーディング設定
netsh interface portproxy add v4tov4 listenport=12345 listenaddress=0.0.0.0 connectport=2222 connectaddress=$wslIP
# 設定確認
netsh interface portproxy show v4tov4
正常に設定されると以下のような表示になります:
ipv4 をリッスンする: ipv4 に接続する:
Address Port Address Port
--------------- ---------- --------------- ----------
0.0.0.0 12345 172.20.112.58 2222
Step 4: ルーターでのポートフォワーディング設定
4.1 Windows PCのローカルIPアドレス確認
Windows PowerShellで実行:
ipconfig
Wi-FiまたはEthernetアダプターのIPv4アドレスをメモします(例:192.168.1.100
)
4.2 ルーター管理画面へのアクセス
ブラウザで 192.168.1.1
または 192.168.0.1
にアクセスし、ルーターの管理画面にログインします。
4.3 ポートフォワーディング設定
ELECOMルーターの場合の具体的手順:
- 「セキュリティー」メニューをクリック
- 「ポートフォワーディング」を選択
- 以下の項目を設定:
ポートフォワーディング: 有効 ✓
ローカルIPアドレス: 192.168.1.100 # Windows PCのローカルIP
タイプ: TCP (プルダウンから選択)
ポート: 12345
コメント: Claude Code接続用
- 「追加」ボタンをクリック
- 「適用」ボタンをクリックして設定を保存
4.4 設定確認
設定完了後、ポートフォワーディング設定リストに以下のように表示されることを確認:
ローカルIPアドレス | タイプ | ポート | コメント |
---|---|---|---|
192.168.1.100 | tcp | 12345 | Claude Code SSH |
4.5 グローバルIPアドレスの確認
Windows PowerShellで実行:
Invoke-WebRequest -Uri "https://api.ipify.org" -UseBasicParsing | Select-Object -ExpandProperty Content
例:203.0.113.123
のようなIPアドレスが取得できます。
Step 5: Android Termiusアプリの設定
5.1 Termiusアプリのインストール
Google Play StoreからTermiusアプリをダウンロードしてインストールします。
5.2 SSH鍵の設定
- Termiusアプリを開く
- 下部メニューの「Keychain」をタップ
- 「Keys」タブを選択
- 右上の「+」ボタンをタップ
- 「Add Key」を選択
鍵の詳細を入力:
Label: WSL SSH Key(任意の名前)
Private Key: [Step 2.3でコピーした秘密鍵を貼り付け]
Public Key: 自動入力される
Passphrase: 空(鍵作成時にパスフレーズを設定した場合は入力)
「Save」をタップ
5.3 ホスト設定
ローカルネットワーク用(同一Wi-Fi)
Label: WSL Local
Address: 192.168.1.100 # Windows PCのローカルIP
Port: 12345
Username: your-wsl-username # WSLのユーザー名(重要:削除しない)
Authentication: Key
Key: WSL SSH Key(Step 5.2で作成)
Password: 削除または空にする(パスワードのみ削除)
外部アクセス用(モバイルデータ)
Label: WSL Remote
Address: 203.0.113.123 # Step 4.4で確認したグローバルIP
Port: 12345
Username: your-wsl-username # WSLのユーザー名(重要:削除しない)
Authentication: Key
Key: WSL SSH Key
Password: 削除または空にする(パスワードのみ削除)
重要ポイント:
- ✅ Username: 残す(SSH接続に必須)
- ❌ Password: 削除(SSH鍵認証を使用するため不要)
Step 6: SSH設定のセキュリティ強化
SSH鍵認証が正常に動作することを確認後、セキュリティを強化:
6.1 SSH設定変更
sudo nano /etc/ssh/sshd_config
以下を変更:
# パスワード認証を無効化
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
MaxAuthTries 3
6.2 SSH設定の反映
sudo service ssh restart
Step 7: 接続テストとClaude Code実行
7.1 接続テスト
- ローカル接続テスト:同一Wi-Fi環境でローカル設定に接続
- 外部接続テスト:モバイルデータで外部設定に接続
接続時にパスワードを求められず、SSH鍵で自動認証されることを確認します。
7.2 Claude Code起動
接続成功後、以下のコマンドを実行:
# Claude Codeのバージョン確認
claude --version
# プロジェクトディレクトリに移動
cd ~/test-project
# Claude Code起動
claude
# セキュリティ確認で「1. Yes, proceed」を選択
Step 8: 日本語入力の対応方法
Claude Codeのターミナル環境では日本語直接入力に制限がありますが、以下の方法で効率的に対応できます:
8.1 メモ帳コピペ方式(最も実用的)
- Androidのメモアプリで日本語入力
- 長押しでコピー
- Termiusに切り替えて長押しでペースト
まとめ
この設定により、外出先のAndroidスマートフォンから自宅のWindows 11 WSL環境で動作するClaude CodeにSSH鍵認証でセキュアにアクセスできるようになります。
Discussion