外にいるスマホから家にあるWindowsのWSL2にSSHしてrootをとるまで

2026年2月17日 | ネットワーク・インフラ

Tailscale

この記事をシェア

はじめに:外出先から自宅PCにアクセスしたい

「外出先から自宅のPCにSSHしたい」「開発中のローカルサーバーをスマホで確認したい」——エンジニアなら誰しも一度は考えることだと思います。

しかし、従来の方法では以下のようなハードルがありました:

  • ルーターでポートフォワーディングを設定する必要がある
  • 動的IPの場合はDDNSサービスが必要
  • セキュリティリスクが高い(ポートを外部に公開)
  • VPNサーバーを自前で構築するのは面倒
  • WSL2は特にネットワーク設定が複雑

今回紹介するTailscaleは、これらの問題をすべて解決してくれる画期的なサービスです。実際に私が今日セットアップした手順を、つまずきポイントも含めて詳しく解説します。

Tailscaleとは?

Tailscaleは、WireGuardベースのメッシュVPNサービスです。難しく聞こえますが、要するに「デバイス同士を簡単に繋げてくれるサービス」です。

従来のVPNとの違い

項目 従来のVPN Tailscale
サーバー構築 必要(OpenVPN等) 不要
ポート開放 必要 不要
設定の複雑さ 高い 非常に低い
NAT越え 設定が必要 自動
料金 サーバー費用 個人利用は無料

Tailscaleで何ができる?

  • デバイス間のファイル共有:外出先からスマホで自宅PCのファイルにアクセス
  • リモートデスクトップ:RDPやVNCを安全に利用
  • SSH接続:今回のメインテーマ。外からサーバー管理
  • 開発サーバーへのアクセス:localhostで動くサイトをスマホで実機確認
  • 自宅NASへのアクセス:クラウドストレージ不要に

すべての通信はWireGuardで暗号化されるため、セキュリティも万全です。

実践:スマホからWSL2にSSH接続する

それでは実際にセットアップしていきましょう。今回の構成は以下の通りです:

  • 接続元:Androidスマホ(Galaxy S10)+ Termux
  • 接続先:Windows 11 + WSL2(Ubuntu 24.04)

Step 1: Tailscaleアカウント作成

Tailscale公式サイトでアカウントを作成します。Google、Microsoft、GitHubアカウントでログイン可能です。

Step 2: WindowsにTailscaleをインストール

公式サイトからWindowsクライアントをダウンロードしてインストール。タスクトレイにアイコンが表示されます。

アイコンをクリックして「Log in」→ ブラウザでログインするとWindowsがTailscaleネットワークに参加します。

Step 3: スマホにTailscaleをインストール

Google PlayまたはApp StoreからTailscaleアプリをインストール。同じアカウントでログインします。

この時点で、スマホとWindowsが同じネットワーク(Tailnet)に接続されます。

Step 4: WSL2にTailscaleをインストール(重要!)

ここがポイントです。WSL2はWindowsとは別のネットワークスタックを持っているため、Windows側のTailscaleだけではWSL2に直接アクセスできません。

# WSL2のUbuntuで実行
curl -fsSL https://tailscale.com/install.sh | sh

# Tailscaleを起動
sudo tailscaled &

# 認証(URLが表示されるのでブラウザで開く)
sudo tailscale up

認証URLが表示されたら、ブラウザで開いてログインします。成功すると、WSL2にも専用のIPアドレス(100.x.x.x)が割り当てられます。

# IPアドレス確認
tailscale ip -4
# 例: 100.126.146.111

Step 5: SSHサーバーのインストールと起動

# SSHサーバーインストール
sudo apt-get install -y openssh-server

# 起動
sudo service ssh start

# 自動起動設定
sudo systemctl enable ssh

Step 6: iptablesの設定(超重要!)

ここで多くの人がハマります。Tailscaleはセキュリティのため、デフォルトで他のTailscaleデバイスからの接続をブロックするiptablesルールを設定します。

# 現在のルールを確認
sudo iptables -L ts-input -n

おそらく以下のようなDROPルールがあるはずです:

DROP       0    --  100.64.0.0/10        0.0.0.0/0

これがTailscaleネットワーク(100.64.0.0/10)からの接続をブロックしています。SSHを許可するルールを追加します:

# SSH(22番ポート)を許可
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 22 -j ACCEPT

# 開発サーバー用に8080や18080も開けるなら
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 18080 -j ACCEPT

Step 7: スマホから接続!

TermuxなどのターミナルアプリからSSH接続します:

ssh ユーザー名@100.126.146.111

パスワードを入力して、接続成功!外出先からでも自宅のWSL2にアクセスできるようになりました。

# rootになる
sudo su -

設定の永続化

WSL2を再起動するとiptablesルールやサービスが消えてしまいます。永続化の設定をしておきましょう。

Tailscaledの自動起動

sudo systemctl enable tailscaled

SSHの自動起動

sudo systemctl enable ssh

iptablesルールの永続化

/etc/rc.localを作成して、起動時にルールを適用します:

sudo tee /etc/rc.local << 'EOF'
#!/bin/bash
sleep 5
iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 22 -j ACCEPT
iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 8080 -j ACCEPT
iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 18080 -j ACCEPT
exit 0
EOF

sudo chmod +x /etc/rc.local

トラブルシューティング

Q: 「接続拒否」と表示される

原因1:SSHサーバーが起動していない

# 確認
sudo service ssh status

# 起動
sudo service ssh start

原因2:iptablesでブロックされている

# ルール確認
sudo iptables -L ts-input -n

# 許可ルール追加
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 22 -j ACCEPT

Q: Tailscale管理画面でWSL2が「offline」のまま

原因:tailscaledが起動していない

# 手動起動
sudo tailscaled &

# 再認証
sudo tailscale up

新しい認証URLが表示されるので、ブラウザで開いてログインし直します。

Q: 認証URLが何度も表示される

原因:tailscaledがすぐ終了している

# プロセス確認
pgrep -a tailscaled

# バックグラウンドで安定起動
sudo nohup tailscaled > /dev/null 2>&1 &
sleep 3
sudo tailscale up

Q: 再起動したら接続できなくなった

原因:iptablesルールがリセットされた

上記の「設定の永続化」セクションを参照して、/etc/rc.localを設定してください。

Q: WindowsのTailscaleだけではダメなの?

WSL2はWindowsとは独立したネットワークを持つため、Windows側のTailscaleでは対応できません。ポートフォワーディングで回避する方法もありますが、WSL2に直接Tailscaleをインストールする方が簡単で確実です。

セキュリティについて

Tailscaleは以下のセキュリティ機能を提供しています:

  • WireGuard暗号化:すべての通信が暗号化される
  • ゼロトラスト:デバイスごとに認証が必要
  • ACL:アクセス制御リストで細かい権限設定が可能
  • MagicDNS:IPアドレスの代わりにホスト名でアクセス可能

とはいえ、SSH接続するなら以下も推奨します:

  • SSHの鍵認証を設定(パスワード認証を無効化)
  • Tailscaleの2要素認証を有効化

まとめ

Tailscaleを使えば、従来は面倒だった「外出先から自宅PCへのアクセス」が驚くほど簡単に実現できます。

今回のポイント:

  1. WSL2には別途Tailscaleのインストールが必要
  2. iptablesルールの追加を忘れずに
  3. 設定の永続化で再起動後も安心

個人利用なら無料で使えるので、ぜひ試してみてください。一度セットアップすれば、外出先でも自宅のWSL2環境をフル活用できるようになります。

この記事が役に立ったらシェアしてください

外出先から自宅にアクセスしたいエンジニア仲間にぜひ教えてあげてください

カテゴリ

ネットワーク・インフラ

公開日

2026年2月17日

お気軽にご相談ください

記事に関するご質問や、AI・IT技術導入のご相談など、お気軽にお問い合わせください。