🚴
WSL内に直接sshしたい
結論
管理者権限でPowerShellを起動して
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\wsl.exe" -PropertyType String -Force
背景
既存の記事で同様のことを検索すると、WSL内でsshサーバーを起動して、Windowsが外部から受け取ったパケットをポートフォワーディングして接続する手法で行われており、パソコンを再起動するたびに変わるWSLのIPを追従するためにバッチファイルを書いたりする必要があり、とても苦しかった。
なにしているのか
上のコマンドはWindowsのOpenSSHサーバーのレジストリを書き換えるコマンドで、ssh接続がされたときにどのシェルをデフォルトのものとして使うか設定している。
つまり、sshサーバーの実体はWindowsで起動されていて、いちいちsshで接続したあとにwslを打ったりする必要がなくなるだけのこと。
そのため、コマンドの途中の-Value
にわたすパラメータとして他のシェルの絶対パスを渡せば任意のシェルが起動できる。
Discussion