1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

下記の記事に記載されているsshサーバ自動起動スクリプトの(特定環境での)バグフィックス版

いずれの記事にもあるように、下記のバッチファイルを、タスクスケジューラでログイン時に自動起動するように登録している。

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%
)

しかし、これを、
「wsl -d Ubuntu exec hostname -I で表示されるIPアドレスが複数ある環境」で実行すると、

  • forループ(6行目)でIPアドレスを指定してsshdのlistenポートをaddして、
  • その次のforループ(5行目)で全てのsshdのlistenポートをdeleteしてしまうので、

「最後にaddしたIPアドレスしかlistenできていない」ことになる。

修正版のバッチファイルが以下のもの。

wsl -d Ubuntu -u root exec service ssh restart

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

オリジナルから5行目をforループの前に持っていっただけだが、

  • forループの前(3行目)で、それまでの全てのsshdのlistenポートをdeleteし、
  • forループの中(6行目)で、指定したIPアドレスに対してaddする、

としている。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?