WSL2のホストへ外部からSSH接続する

問題

  • WSL2では、WSL2のLinuxは本体のWindowsとは別のネットワークセグメントに置かれるため(本体のWindowsのIPアドレスとWSL2のLinuxのIPアドレスは別セグメント)、別のPCからWSL2のLinuxにアクセスすることはできない
  • また、WSL2のLinuxに割り当てられるIPアドレスは起動するたびに変わる
  • 別のPCからWSL2のLinuxにアクセスするためには、Windows上でポートフォワーディングをしてアクセスを転送するようにする必要がある。また、通常、Windowsはファイヤウォールでポートを閉じているので、ファイヤウォールの設定を変えてポートを開く必要もある

手順

1. WSL2のLinux上でipコマンドかifconfigコマンドでIPアドレスを調べる

 $ ifconfig
 
 $ ip address

2. Windows上でファイヤウォールの設定を変えてポートを空ける

 > New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort 22,80 -Action Allow -Protocol TCP
 > New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort 22,80 -Action Allow -Protocol TCP
  • 管理者権限でPowerShellを起動して行う
  • ここでは開くポートを22番と80番とする

3. Windows上でポートフォワーディングを設定する

 > netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=10.0.0.5
 > netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=80 connectaddress=10.0.0.5
  • ここではWSL2のLinuxのIPアドレスを10.0.0.5とする

上記の設定を削除する

 > Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock'
 > netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0
 > netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2020-09-16 (水) 19:59:03