【お知らせ】

<2021/03/31 追記>
外部のマシンから WSL2 にアクセスするためには、本ページの設定をした後、コマンドプロンプトで以下のコマンドを実行してください。ssh で Windows マシンの 10022 ポート に接続することにより、WSL2 にアクセスできるようになります。
> ssh -N -L <WindowsのNICのIPアドレス>:10022:127.0.0.1:22 <WSL2のユーザ名>@localhost



【本題】


Windows の ssh から WSL2 の sshd にアクセスするための設定です。WSL2 で Ubuntu を利用する場合の設定例となります。

1) WSL2 に openssh-server をインストールする。
$ sudo -E apt update
$ sudo -E apt upgrade ← 必要に応じて..
$ sudo -E apt install openssh-server

2) WSL2 で次のコマンドを実行する。
$ sudo ssh-keygen -A

3) 必要に応じて、/etc/ssh/sshd_config に次のような設定を行う。
Port 10022 # sshd を 22番以外のポートで立ち上げたい場合
PasswordAuthentication yes # パスワード認証を許可したい場合

4) WSL2 で sshd を立ち上げる。
$ sudo service ssh start

5) 次のページを参考として、Windows の ssh-agent サービスを立ち上げる。
※ 上記のページには WSL から Windows の ssh-agent を使うためのツール、ssh-agent-wsl の設定方法も紹介されています。この設定は .bash_profile に次の設定を追加するのが良いようです。
eval $(<ssh-agent-wsl コマンドを置いた Windows のパス>/ssh-agent-wsl -a ~/.ssh/ssh-agent-wsl.sock -r)
ssh-agent-wsl は同じ開発者により新しいプロジェクト wsl-ssh-agent が立ち上がっていますが、WSL2 には対応できていないようです。

6) Windows で ssh のための鍵を作成する。(以降の「>」は、コマンドプロンプトで実行することを示す。)
> ssh-keygen -t ed25519
※ rsa の鍵ではなく、ed25519 の鍵を作成してください。rsa の鍵の場合、Windows の ssh-agent でエラーが出る場合があるようです。また、パスフレーズの指定は行ってください。

7) Windows で作成した公開鍵を ssh-agent に登録する。
> ssh-add %USERPROFILE%\.ssh\id_ed25519

8) 作成した公開鍵(d_ed25519.pub)を WSL2 の ~/.ssh/authorized_keys に追加登録する。
$ cd
$ mkdir -p .ssh
$ chmod 700 .ssh
$ cd .ssh
$ cat /mnt/c/Users/<Windows user>/.ssh/id_ed25519.pub >> authorized_keys
$ chmod 600 authorized_keys

9) Windows から WSL2 にパスフレーズの入力なしに ssh 接続できることを確認する。
> ssh <WSL2 user>@localhost
> ssh -p 10022 <WSL2 user>@localhost ← sshd のポート番号を変更している場合


<変更履歴>
  • 2020/07/14 このページを作成した。


最終更新:2021年05月08日 22:56