Windows Subsystem for Linux (WSL2) は非常に強力な開発環境ですが、Windows標準のターミナルだけでなく、MacのiTerm2やiPad、あるいは他のPCからSSH経由でアクセスしたい場面は多いですよね。
しかし、WSL2は内部ネットワーク(NAT)で動作しているため、単純にSSHサーバーを立てるだけでは外部から接続できません。
この記事では、WSL2でSSHサーバーを構築し、Windowsのポートフォワーディングとファイアウォールを設定して外部から接続するまでの全手順を解説します。
WSL側のSSHサーバー設定
まずは、WSL(Ubuntuなど)の中でSSH接続を受け入れられるように設定します。
SSHサーバーのインストール
WSLを開き、以下のコマンドを実行して最新の状態に更新し、SSHサーバーをインストールします。
sudo apt update
sudo apt install openssh-server
設定ファイルの編集
WSLのSSH設定を編集します。Windows側のSSH(Port 22)と衝突しないよう、ポート番号を変更するのがポイントです。
sudo nano /etc/ssh/sshd_configファイル内で以下の項目を見つけ、書き換えてください。
Port 2222(22から2222に変更)PasswordAuthentication yes(パスワード認証を許可)ListenAddress 0.0.0.0(すべてのIPからの接続を待機)

SSHサービスの起動
設定を反映させるために、SSHサービスを再起動します。
sudo service ssh restartWSLのIPアドレスを確認する
ポートフォワーディングを設定するために、WSLが現在持っている内部IPアドレスを確認します。
hostname -I
Windows側のポートフォワーディング設定
WSL2はWindowsの内部ネットワークにあるため、「Windowsのポート2222に届いた通信を、WSLのIPのポート2222に転送する」という設定(ポートプロキシ)が必要です。
Windowsの PowerShellを「管理者として実行」 し、以下のコマンドを入力します。 ※connectaddress の部分は、先ほどの手順でメモしたIPアドレスに置き換えてください。
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.xx.xx.xx connectport=2222
正しく設定されたか確認するには、以下のコマンドを叩きます。
netsh interface portproxy show all
Windowsファイアウォールの許可設定
Windowsが外部からの通信をブロックしないよう、ポート2222を開放します。
- Windowsメニューで「セキュリティが強化されたWindowsファイアウォール」を検索して開きます。
- 左側の「受信の規則」をクリックし、右側の「新しい規則…」をクリック。
- 「ポート」を選択して「次へ」。
- 「TCP」を選択し、「特定のローカルポート」に「2222」と入力して「次へ」。
- 「接続を許可する」を選択して「次へ」。
- 「ドメイン」「プライベート」「パブリック」すべてにチェックが入っていることを確認して「次へ」。
- 名前を「WSL SSH」など分かりやすいものにして「完了」をクリック。

外部から接続テスト!
いよいよ接続です。外部のPCやターミナルから、WindowsマシンのIPアドレス(ipconfigで確認できるIPv4アドレス)に対して接続します。
ssh <WSLのユーザー名>@<WindowsのIPアドレス> -p 2222
パスワードを求められ、無事にWSLのターミナルが表示されれば成功です!
トラブルシューティング
もし接続できない場合は、以下の3点を確認してください。
- WSLのIPが変わっていないか?:WSL2のIPは再起動のたびに変わることがあります。その際はポートフォワーディングのコマンドを新しいIPで再実行してください。
- SSHサービスは動いているか?:WSL側で
sudo service ssh statusを確認してください。 - ポート番号は合っているか?:WSL側の設定、Windows側の転送設定、接続時のコマンドすべてが
2222で統一されているか確認してください。
まとめ
一度設定してしまえば、使い慣れた外部ターミナルから快適にWSLを利用できるようになります。
- WSLでSSHサーバーを立てる
- Windowsでポートフォワーディングを設定する
- ファイアウォールを許可する
このステップで、あなたの開発環境はさらに柔軟になります。ぜひ試してみてください!

コメント