🐥

スマホからClaude Codeを操作して、いつでもどこでもコーディング可能にする方法

に公開

はじめに

怠惰を極めし者、橋田至です。

https://x.com/dall_develop

皆さんは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 の導入・設定

  1. Mac に Tailscale をインストール

    brew install tailscale
    sudo tailscale up
    
    • ブラウザが開くので、既存の GitHub/Google アカウント等でログイン
    • MagicDNS を有効化しておくと、IP ではなくホスト名(your-mac.tailnet.ts.net)で接続可能に
      • MagicDNSについては後に詳しく解説します。

Tailscaleはログインすると、その端末がアプリ内に表示されるため、これが表示されたら接続成功です。

  1. iPhone に Tailscale をセットアップ

    • App Store から Tailscale を開き、同じアカウントでログイン
    • Mac が一覧に表示され、接続状態(🟢)になることを確認

ベストプラクティス

  • MagicDNS を有効にすると、IP アドレス管理の手間が不要になります。
  • ACL(アクセス制御リスト)で、SSH(ポート 22)を許可するデバイスを限定しましょう。

2. Mac 側の SSH 設定

  1. リモートログインを有効化

    • システム設定 → 共有 → 「リモートログイン」をオン
    • 「次のユーザにアクセスを許可」には自分のユーザ名のみを指定

  1. 公開鍵認証の設定

    # まだキーを持っていない場合
    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
    
  2. 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)での設定

  1. 新規ホスト(Host)を追加

    • Alias:任意(例:My Mac via Tailscale
      • ここは好きなものを入力
    • Host:MagicDNS 名(例:your-mac.tailnet.ts.net)または Tailscale IP(例:100.x.y.z
      • ここはMagicDNSを使う方がおすすめです
    • Port22
    • Username:Mac のユーザ名
      • Macのユーザ名はターミナルにてwhoamiと打てば分かります
  2. 認証方法

    • SSH Key(おすすめ)

      1. Termius の設定画面 → Keychain → 新規キーを生成
      2. 公開鍵 (.pub) を Mac 側の ~/.ssh/authorized_keys に追加
    • Password(簡易だがセキュリティ低下)

  3. 接続テスト

    • Termius のホスト一覧からタップし、ターミナルが開くか確認

ベストプラクティス

  • Termius 内で SSH 鍵管理を行い、端末ごとに鍵を分離
  • キーにパスフレーズを設定し、Termius 側でも保護する

接続が完了するとこのような画面になります。

この画面になると、もうスマホからPCに接続できているので、あとは目的のディレクトリに移動して

claudeを実行するだけです。

セキュリティ上の注意点

  • Tailscale SSH 機能

    • Tailscale の管理コンソールで「SSH を有効化」すると、公開鍵管理が不要・自動化できます。ただし Termius の対応状況をご確認ください。
  • リモートログインの無効化

    • 使用しないときは必ずリモートログインをオフに
  • ログ監視

    • /var/log/system.logjournalctl で不審なログインをチェック

トラブルシューティング

現象 対策
接続拒否 (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 統合も可)

主な機能

  1. ノード登録:各端末に Tailscale クライアントをインストールし、OAuth2(Google, GitHub, Microsoft など)でログイン
  2. IP アドレスの自動割当:各ノードに 100.x.y.z 形式のプライベート IP を自動付与
  3. ACL(アクセス制御リスト):クラウド上で「誰がどのノードにアクセスできるか」を YAML 定義で細かく制御
  4. リレー(DERP):直接接続できない場合は中継サーバ経由
  5. 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 レコードはクラウド側で管理

主な機能

  1. 自動名前解決:ノード名(コンピュータ名)をそのまま FQDN 化して解決
  2. サブドメイン提供:独自ドメイン(例:corp.internal)への CNAME 設定も可
  3. サービスディスカバリ: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 アカウントでホスト情報やキーをクラウド保存)

主な機能

  1. ホスト管理:ラベル、グループ、タグで整理
  2. SSH キー管理:公開鍵・秘密鍵の生成、import/export、パスフレーズ保持
  3. ポートフォワーディング:ローカル/リモートポートフォワードの GUI 設定
  4. スニペット:よく使うコマンドを登録し、ワンクリック実行
  5. SFTP:ファイル転送やターミナルからのドラッグ&ドロップ

運用のベストプラクティス

  • SSH Config 連携:~/.ssh/config をインポートし、一元管理
  • キーの厳重管理:パスフレーズ付き鍵を使い、OS キーリングと連携
  • グループ分け:開発環境/検証環境/本番環境を明確にグループ分けして誤操作防止
  • スニペット活用:初期ログイン直後に必須のコマンド(環境切替やログ確認)スニペット化
  • 定期同期:複数端末で利用している場合は Termius アカウント同期を有効化し、設定差分を防止

まとめ

  1. Tailscale で安全なプライベートネットワークを構築
  2. Mac 側で SSH 鍵認証+リモートログインを設定
  3. Termius でホストを登録し、パスワードレス・かつキー管理された接続を実現

参考

https://tailscale.com/

https://termius.com/index.html

https://zenn.dev/maguroid/articles/aa9d043f9939b4

Discussion