スマホからClaude Codeを操作して、いつでもどこでもコーディング可能にする方法
はじめに
怠惰を極めし者、橋田至です。
皆さんはClaude Code使っていますか?
私はリリースされてから毎日使っており、 npx ccusage
の使用結果のログが現在$224に到達しています。
先週私はエンジニア仲間4人でさわやかまでドライブに行ったのですが、車内で
「この時間でもコーディング出来たらな〜」
と感じました。
エンジニアであれば誰でも一度は夢見ることでしょう。
「スマホからでもコーディングしたい」と
その時私はこう感じました。
「それ、Claude Codeなら出来るじゃん」 と
ならばもうやるしかありません。
「スマホからいつでもどこでもバイブコーディング」の始まりです。
私の環境
- iPhone 11 pro
- MacBook Pro m1
- 使用アプリ
- Tailscale
- Termius
- 目的:iPhone から Mac に SSH 接続し、リモートでターミナルを操作できるようにする
- 利点:外出先や別のネットワーク環境でも安全に Mac 上でコーディングやサーバ管理が可能
この記事は7割程がAIを用いて書いています。
以下の手順で、Tailscale と Termius を使って iPhone から Mac のターミナルを開き、コーディングできるようにする流れを解説します。各ステップにおけるベストプラクティスも併せてご紹介します。
手順
1. Tailscale の導入・設定
-
Mac に Tailscale をインストール
brew install tailscale sudo tailscale up
- ブラウザが開くので、既存の GitHub/Google アカウント等でログイン
-
MagicDNS を有効化しておくと、IP ではなくホスト名(
your-mac.tailnet.ts.net
)で接続可能に- MagicDNSについては後に詳しく解説します。
- MagicDNSについては後に詳しく解説します。
Tailscaleはログインすると、その端末がアプリ内に表示されるため、これが表示されたら接続成功です。
-
iPhone に Tailscale をセットアップ
- App Store から Tailscale を開き、同じアカウントでログイン
- Mac が一覧に表示され、接続状態(🟢)になることを確認
ベストプラクティス
- MagicDNS を有効にすると、IP アドレス管理の手間が不要になります。
- ACL(アクセス制御リスト)で、SSH(ポート 22)を許可するデバイスを限定しましょう。
2. Mac 側の SSH 設定
-
リモートログインを有効化
- システム設定 → 共有 → 「リモートログイン」をオン
- 「次のユーザにアクセスを許可」には自分のユーザ名のみを指定
-
公開鍵認証の設定
# まだキーを持っていない場合 ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "iPhoneからの接続用" # 公開鍵を authorized_keys に追加 cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
-
sshd_config のハードニング
/etc/ssh/sshd_config
で以下を確認・設定PasswordAuthentication no PermitRootLogin no Protocol 2 AllowTcpForwarding yes X11Forwarding no
- 設定変更後は
sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd
- 設定変更後は
ベストプラクティス
- パスワード認証を無効化し、公開鍵のみでログインする
- 必要最小限のユーザーだけを “リモートログイン” グループに入れる
3. Termius(iPhone)での設定
-
新規ホスト(Host)を追加
-
Alias:任意(例:
My Mac via Tailscale
)- ここは好きなものを入力
-
Host:MagicDNS 名(例:
your-mac.tailnet.ts.net
)または Tailscale IP(例:100.x.y.z
)- ここはMagicDNSを使う方がおすすめです
-
Port:
22
-
Username:Mac のユーザ名
- Macのユーザ名はターミナルにて
whoami
と打てば分かります
- Macのユーザ名はターミナルにて
-
Alias:任意(例:
-
認証方法
-
SSH Key(おすすめ)
- Termius の設定画面 → Keychain → 新規キーを生成
- 公開鍵 (
.pub
) を Mac 側の~/.ssh/authorized_keys
に追加
-
Password(簡易だがセキュリティ低下)
-
-
接続テスト
- Termius のホスト一覧からタップし、ターミナルが開くか確認
ベストプラクティス
- Termius 内で SSH 鍵管理を行い、端末ごとに鍵を分離
- キーにパスフレーズを設定し、Termius 側でも保護する
接続が完了するとこのような画面になります。
この画面になると、もうスマホからPCに接続できているので、あとは目的のディレクトリに移動して
claude
を実行するだけです。
セキュリティ上の注意点
-
Tailscale SSH 機能
- Tailscale の管理コンソールで「SSH を有効化」すると、公開鍵管理が不要・自動化できます。ただし Termius の対応状況をご確認ください。
-
リモートログインの無効化
- 使用しないときは必ずリモートログインをオフに
-
ログ監視
-
/var/log/system.log
やjournalctl
で不審なログインをチェック
-
トラブルシューティング
現象 | 対策 |
---|---|
接続拒否 (Connection refused) | ・Mac の「リモートログイン」がオフ ・ファイアウォール設定で TCP 22 がブロック ・Tailscale 接続の問題 |
認証エラー (Permission denied) | ・公開鍵を authorized_keys に正しく追加しているか ・Termius 側で正しいキーを選択しているか |
Tailscale が起動しない | ・macOS のセキュリティ設定で拡張機能を許可 ・VPN 権限を Tailscale に付与 |
ホスト名解決できない (Name or service not known) | ・MagicDNS が有効か確認 ・DNS キャッシュクリア ( sudo dscacheutil -flushcache ) |
4. Tailscale
概要
-
何か:Tailscale は、WireGuard をベースにしたゼロコンフィデント(Zero-Trust)VPN サービスです。
-
特徴:
- ネットワーク設定不要で、ノード(端末)同士が自動的にメッシュ接続を構築
- NAT トラバーサル(UDP Hole Punching) による直接通信
- ルーティングや認証はクラウド管理(SAML や OAuth2 統合も可)
主な機能
- ノード登録:各端末に Tailscale クライアントをインストールし、OAuth2(Google, GitHub, Microsoft など)でログイン
-
IP アドレスの自動割当:各ノードに
100.x.y.z
形式のプライベート IP を自動付与 - ACL(アクセス制御リスト):クラウド上で「誰がどのノードにアクセスできるか」を YAML 定義で細かく制御
- リレー(DERP):直接接続できない場合は中継サーバ経由
- Exit Node:指定ノード経由でインターネット接続
運用のベストプラクティス
- 認証連携:社内 ID プロバイダー(OIDC/SAML)と統合し、メンバー管理を一元化
- ACL の厳格化:最小権限の原則に基づき、サービス間通信やユーザー権限を細かく分割
- ログ&監査:Tailscale Audit Logs を有効にして、接続履歴や設定変更を定期的に確認
- Exit Node の限定:インターネットアクセス用 Exit Node は信頼できる専用サーバに限定
- アップデート:WireGuard カーネルモジュールやクライアントのバージョンは常に最新に
5. MagicDNS
概要
-
何か:Tailscale が提供する DNS オーバーレイ機能で、VPN 内のノードをホスト名で解決可能にするサービス
-
特徴:
-
*.beta.tailscale.net
の代わりに、hostname.tailnet.yourdomain
のようなフレンドリ名 - エンドポイントの IP 変動を意識せず、常に最新の VPN-IP を返す
- DNS レコードはクラウド側で管理
-
主な機能
- 自動名前解決:ノード名(コンピュータ名)をそのまま FQDN 化して解決
-
サブドメイン提供:独自ドメイン(例:
corp.internal
)への CNAME 設定も可 - サービスディスカバリ:SRV レコードを使ったサービス発見
運用のベストプラクティス
- ホスト名の一貫性:登録前に各ノードのホスト名を整理し、重複や意味のない名前を避ける
- TTL の活用:頻繁にノード数が変動する場合は TTL を短めに設定
- Split-horizon DNS:社内と社外(VPN外)で異なる解決結果が必要な場合は、DNS フォワーダや conditional forwarder と組み合わせ
- DNS フィルタリング:必要に応じて DNS over HTTPS/DoT を有効化し、通信の暗号化を強化
6. Termius
概要
-
何か:クロスプラットフォーム対応の SSH/Telnet クライアントアプリケーション
-
対応OS:Windows、macOS、Linux、iOS、Android
-
特徴:
- GUI でのホスト&グループ管理
- SSH キー生成・管理、パスフレーズ入力の自動化
- SFTP 統合、ポートフォワーディング設定
- スニペット(接続後に実行するコマンド)/テンプレート機能
- 同期機能(Termius アカウントでホスト情報やキーをクラウド保存)
主な機能
- ホスト管理:ラベル、グループ、タグで整理
- SSH キー管理:公開鍵・秘密鍵の生成、import/export、パスフレーズ保持
- ポートフォワーディング:ローカル/リモートポートフォワードの GUI 設定
- スニペット:よく使うコマンドを登録し、ワンクリック実行
- SFTP:ファイル転送やターミナルからのドラッグ&ドロップ
運用のベストプラクティス
- SSH Config 連携:~/.ssh/config をインポートし、一元管理
- キーの厳重管理:パスフレーズ付き鍵を使い、OS キーリングと連携
- グループ分け:開発環境/検証環境/本番環境を明確にグループ分けして誤操作防止
- スニペット活用:初期ログイン直後に必須のコマンド(環境切替やログ確認)スニペット化
- 定期同期:複数端末で利用している場合は Termius アカウント同期を有効化し、設定差分を防止
まとめ
- Tailscale で安全なプライベートネットワークを構築
- Mac 側で SSH 鍵認証+リモートログインを設定
- Termius でホストを登録し、パスワードレス・かつキー管理された接続を実現
参考
Discussion