🐷

【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ルーターの場合の具体的手順:

  1. 「セキュリティー」メニューをクリック
  2. 「ポートフォワーディング」を選択
  3. 以下の項目を設定:
ポートフォワーディング: 有効 ✓
ローカルIPアドレス: 192.168.1.100  # Windows PCのローカルIP
タイプ: TCP (プルダウンから選択)
ポート: 12345
コメント: Claude Code接続用
  1. 「追加」ボタンをクリック
  2. 「適用」ボタンをクリックして設定を保存

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鍵の設定

  1. Termiusアプリを開く
  2. 下部メニューの「Keychain」をタップ
  3. 「Keys」タブを選択
  4. 右上の「+」ボタンをタップ
  5. 「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 接続テスト

  1. ローカル接続テスト:同一Wi-Fi環境でローカル設定に接続
  2. 外部接続テスト:モバイルデータで外部設定に接続

接続時にパスワードを求められず、SSH鍵で自動認証されることを確認します。

7.2 Claude Code起動

接続成功後、以下のコマンドを実行:

# Claude Codeのバージョン確認
claude --version

# プロジェクトディレクトリに移動
cd ~/test-project

# Claude Code起動
claude

# セキュリティ確認で「1. Yes, proceed」を選択

Step 8: 日本語入力の対応方法

Claude Codeのターミナル環境では日本語直接入力に制限がありますが、以下の方法で効率的に対応できます:

8.1 メモ帳コピペ方式(最も実用的)

  1. Androidのメモアプリで日本語入力
  2. 長押しでコピー
  3. Termiusに切り替えて長押しでペースト

まとめ

この設定により、外出先のAndroidスマートフォンから自宅のWindows 11 WSL環境で動作するClaude CodeにSSH鍵認証でセキュアにアクセスできるようになります。

Accenture Japan (有志)

Discussion