エンジニアらしき人のひとりごと

100人中100人は興味を示さなくても、100万人居たら1人くらいは面白いと思ってくれそうな、重箱の隅をほじくってみるブログ。

WSL2 を、 TeraTerm で使いたい!

忘れないように、メモしておこう。

Windows Terminalもいいんだけど、使い慣れたTeraTermでWSLを使いたい・・・。
で、いちいちTeraTermでID/PASS入れるのもめんどくさい。
という時の手順のメモ。ただ漏れはあると思うので、そこは推測してくださいまし。

■前提

WSL2が起動するまでに設定が完了している
Windows上からSSHでログインできる

■手順

1. WSL2上で、公開鍵・秘密鍵を作っておく

例)
公開鍵=wsl_login_key.pub
秘密鍵=wsl_login_key

$ ssh-keygen -t rsa -b 4096 -f wsl_login_key
$ cat wsl_login_key.pub >> ~/.ssh/authorized_keys
2. 秘密鍵のファイルを、Windows側でアクセスできるところに置いておく。(/mnt/c/からたどれるどこか)
3. 以下のWindowsのバッチファイルを作成して、デスクトップかどこかに置いておく

USERID と PRIVATEKEY の値は、変更してください。

REM .wslconfigがなかったら作る
IF NOT EXIST %USERPROFILE%\.wslconfig ((echo [wsl2]& echo localhostForwarding=true) > %USERPROFILE%\.wslconfig)

SET USERID=<WSLのユーザー名>
SET PRIVATEKEY=<秘密鍵のWindows上でのファイルパス>

REM 初回実行時は、とりあえず一度WSLを落としてから、sshdを起動する。 wslconfigのポートフォワーディングが働かない時があるので。
FOR /f "usebackq tokens=4" %%a IN (`wsl service ssh status`) DO (set TOKI=%%a)
IF NOT "%TOKI%"=="running" (wsl --shutdown & wsl -u root service ssh start)

START /B /D "C:\Program Files (x86)\teraterm\" ttermpro.exe ssh2://%USERID%@localhost /auth=publickey /keyfile=%PRIVATEKEY% /nosecuritywarning

メモ

WSL2は、WSL1とは違って別IPアドレスが振られるので、
ホスト(Windows側)からlocalhostでアクセスできるように、 .wslconfig ファイルにて「ポートフォワーディングしてね」と設定する。
が、なぜかうまくいかないことが時々あるので、一度WSLをシャットダウンさせるようにしている。
TeraTermに /nosecuritywarning 付けてるけど、localhostだし~。