【完全版】WSL2に外部ターミナルからSSH接続する設定手順:開発環境をより自由に!

この記事は約4分で読めます。

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 restart

WSLの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を開放します。

  1. Windowsメニューで「セキュリティが強化されたWindowsファイアウォール」を検索して開きます。
  2. 左側の「受信の規則」をクリックし、右側の「新しい規則…」をクリック。
  3. 「ポート」を選択して「次へ」。
  4. 「TCP」を選択し、「特定のローカルポート」に「2222」と入力して「次へ」。
  5. 「接続を許可する」を選択して「次へ」。
  6. 「ドメイン」「プライベート」「パブリック」すべてにチェックが入っていることを確認して「次へ」。
  7. 名前を「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でポートフォワーディングを設定する
  • ファイアウォールを許可する

このステップで、あなたの開発環境はさらに柔軟になります。ぜひ試してみてください!

コメント

タイトルとURLをコピーしました