なぜこれを作ったか
どうも、GUI派だったのに気づいたらCLIにだいぶ染まってきた川島です。Linux沼にハマると、環境構築そのものが趣味みたいになってきます。
Claude Code の環境も Windows から Linux 環境に移り、WezTerm を入れたり、tmux を触り始めたりしているうちに、ターミナルまわりの設定がどんどん増えていきました。
その結果、自宅のWSL環境はかなり快適になった一方で、その快適さは簡単に持ち運べないものになっていました。
As-Is(現状)
To-Be(目標)
外出先でも、慣れたCLIや設定済みの開発環境をそのまま使いたい。
そう思って作ったのが、今回の「外出先から自宅WSL環境につなぐ」構成です。
Claude や Codex を使うとき、自宅では WSL(Windows Subsystem for Linux)を使って作業しています。
PowerShell でもできるのですが、Claude にコマンドを実行させると bash 前提のコマンドが出てくることが多く、PowerShell に変換するとエラーになるケースがちょくちょく発生します。その手間を省くために、普段から WSL(Linux 環境)で使うようにしています。
問題は外出先です。
自宅の WSL 環境はかなりカスタマイズしていて(dotfiles、ツール類、プロジェクト構成など)、外出先の PC にそれを全部再現するのは現実的ではありません。環境の差分が出ると、Claude に実行してもらったコマンドが動かなかったり、パスが違ったりとずれが生じてしまいます。
「外出先でも自宅の WSL にそのまま繋げればいい」という発想で、構成を整えました。
採用した構成
外出先のPC(WSL or Mac)
│
└── Tailscale VPN ──→ 自宅Windows PC(WSL)
└── Claude Code / Codex がローカルで動く
自宅PC に SSH で入るだけなので、外出先の環境は最小限でOK。Claude の処理は自宅 PC のローカルで完結します。外出時は、自宅 Windows PC 側は基本的にサインアウトするか画面を閉じた待機状態にして、電源とネットワークだけ維持したまま接続可能な状態で置いていく運用です。
なぜ GitHub で Skills を持つだけでは足りないのか
最初は GitHub に Skills や dotfiles を置いておけば、外出先でもすぐ再現できるのではと思っていました。
実際、設定を GitHub で管理しておくこと自体はかなり有効です。
ただ、実際に持ち歩きたいのは Skills だけではありません。
- MCP の設定
- ローカルに入れているツール類
- tmux まわりの設定
- シェルやターミナルの細かいカスタマイズ
- そのマシン固有の認証や接続設定
このあたりも含めて揃えないと、結局「似ているけど微妙に違う環境」になります。
特に AI コーディング系は、ちょっとした環境差分でコマンドが通らなかったり、期待した補助機能が動かなかったりして、地味にストレスが溜まります。
GitHub で管理しておくのは大事ですが、再現するものが増えてくると、毎回それを外出先のマシンに揃えるのもだんだん面倒になってきました。
それなら、最初から自宅の完成済みの環境にそのまま入ったほうが早い、という結論になりました。
なぜクラウド VM ではないのか
最初は Azure VM + Tailscale + SSHFS の構成も検討しました。
| 検討した理由 | 廃止した理由 |
|---|---|
| 自宅PCに依存せずどこからでも動く | 外出先からの利用は全体の2割程度 |
| 自宅PCが落ちていても作業できる | 自宅PCをつけっぱなしにする運用で十分 |
| Tailscale直接接続で無料で同じことができる | |
| 自宅回線が十分速い(上り 257Mbps、ping 19ms) | |
| クラウドVMのコスト(約2〜3千円/月)を払う意味がなかった |
クラウド VM が必要になるとしたら:
- 外出中も自宅PCの電源を切りたい場合
- 自宅回線が不安定な場合
- クラウド上で常時動かしたい重い処理がある場合
遠距離でも遅延がほぼゼロな理由
外出先のPC ──→ [キー入力だけ送る] ──→ 自宅PC
[画面の文字だけ返す] ←──
SSH ターミナルはキー入力と文字描画だけを通信するので、東京〜福岡間(ping 約 10〜20ms)でも体感遅延はほぼゼロです。Claude の処理はすべて自宅 PC 上で完結するため、距離の影響を受けません。
セットアップ手順
1. Tailscale のインストール
自宅PC(Windows) と 外出先デバイス それぞれに Tailscale をインストールし、同じアカウントでサインイン。同じ VPN ネットワークに入ります。
自宅 PC のTailscale IP を確認しておきます(後で使います)。
# Windows PowerShell で実行
tailscale ip
# → 100.x.x.x 形式の IP が表示される
100.64.x.x帯は Tailscale 専用の IP 帯(RFC6598)です。インターネット上の IP ではなく、Tailscale VPN 内でのみ有効なアドレスです。
2. 自宅PC の OpenSSH サーバーを有効化
# PowerShell(管理者)で実行
Add-WindowsCapability -Online -Name OpenSSH.Server
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
SSH ログイン時に直接 WSL に入れるよう、デフォルトシェルを設定します:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" `
-Name DefaultShell `
-Value "C:\Windows\System32\wsl.exe" `
-PropertyType String -Force
3. 公開鍵認証の設定
外出先 PC で鍵ペアを生成(なければ)
ssh-keygen -t rsa
公開鍵を自宅 PC に登録
外出先 PC の PowerShell から:
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh <Windowsユーザー名>@<自宅のTailscale IP> `
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
注意:このコマンドはパスワードでのSSHログインが通ることが前提です。
初回はパスワード認証を求められます。Windows のログインパスワードを入力してください。パスワードが不明な場合は、自宅 PC のコンソール(WSL 上)で先にパスワードを設定してから実行します。
4. SSH config の設定(外出先デバイス側)
外出先 PC の ~/.ssh/config に追加:
Host home-wsl
HostName <自宅PCのTailscale IP>
User <Windowsのユーザー名>
IdentityFile ~/.ssh/id_rsa
chmod 600 ~/.ssh/config
5. 接続
ssh home-wsl
# → パスワードなしで自宅WSLのターミナルが開く
トラブルシューティング
「fingerprint を設定した覚えがない」と驚いた
ED25519 key fingerprint is SHA256:xxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])?
これは正常です。ホスト鍵(/etc/ssh/ssh_host_ed25519_key)は OpenSSH サーバインストール時に自動生成されるので、自分で設定した覚えがなくて当然です。
-
初回接続時:
yesと入力 →known_hostsに記録されて以降は出ない - 以前と fingerprint が変わった場合: サーバ再構築 or 中間者攻撃の可能性あり → 要確認
ssh home-wsl が name resolution で失敗する
ssh: Could not resolve hostname home-wsl: Temporary failure in name resolution
home-wsl は DNS 名ではなく ~/.ssh/config のニックネームです。config ファイルが存在しない or 書かれていないと解決できません。手順4の設定を確認してください。
パスワードを何度入力しても Permission denied になる
公開鍵をコピーするコマンドが失敗しているパターンです。
# まず単体でパスワードログインできるか確認
ssh <ユーザー名>@<Tailscale IP>
これが通らない場合、WSL 内にそのユーザーが存在しないか、パスワードが設定されていない可能性があります。WSL のコンソールで確認してください:
id <ユーザー名>
注意点
- 自宅PCの電源: 外出中はスリープ・シャットダウンしないよう設定が必要
-
WSL の SSH サーバー: Windows 再起動で止まるので
wsl.confで自動起動を設定する - Windows のデスクトップ操作が必要な場合: RDP(接続先: Tailscale IP)でも繋げる。Mac なら Microsoft Remote Desktop、Windows なら mstsc.exe を使用
まとめ
| 要件 | 解決手段 |
|---|---|
| 外出先からアクセス | Tailscale VPN(固定IP不要、どこからでも接続) |
| 自宅WSLと同じ環境 | SSH でそのまま入るだけ(環境を複製不要) |
| ファイルアクセス速度 | 自宅PCのローカルで動くので速い |
| コスト | 無料 |
外出先のPC に必要なのは Tailscale と SSH クライアントだけ。自宅 WSL の環境をそのまま使い続けられます。