Windows 起動時に WSL2 の環境への ssh 設定を自動でするやつ

やりかた

以下のコードを setup-ssh.bat とかの名前で好きな場所に置き、

1
2
3
4
5
wsl -d Ubuntu -u root exec service ssh restart

for /F %%i in ('wsl -d Ubuntu exec hostname -I') do set ip=%%i
netsh interface portproxy delete v4tov4 listenport=22
netsh interface portproxy add v4tov4 listenport=22 connectaddress=%ip%

タスクスケジューラにて以下の設定でタスクを追加しておけばOKです。

  • 全般
    • 最上位の特権で実行する: on
  • トリガー
    • タスクの開始: ログオン時
    • 遅延時間を指定する: 30秒間
  • 操作
    • 操作: プログラムの開始
    • プログラム/スクリプト: 上記のファイルを置いたパス

メモ

参考にした Qiita 記事の方法だと WSL2 内にもファイルを置かないといけなかったため、その記事のコメント欄にあった方法を参考に Windows 側だけで実行したら良いようにしました。さらに WSL2 内の sshd も自動で起動してほしかったので、そのコマンドも追加してあります。

参考

WSL2で外部からssh接続 - Qiita