知識は未だ霧の中

スパコン眼鏡NET。HPCのことはあまり書かない。

Windows Subsystem for Linuxで、Windows側のSSHキーと設定を使う方法

目的

WindowsでWin32-OpenSSHがまともに使えるようになってきて、Windows側とWSLの両方でSSHを使うよって人もいるかもしれません。
とりあえず、ここに一人います。

SSH鍵のセットアップって、結構面倒(主に、リモート先で鍵を追加して回るのが面倒)なので共有できたら楽ですよね。
別マシンで秘密鍵を流用するのはセキュリティ的によくないことですが、WSLなら物理一台なのでいいじゃん。と先に言い訳しておきます。

方法

まず、WSLのディレクトリマウントのオプションを設定します。

vim /etc/wsl.conf

下記を追記してください。

[automount]
enabled = true
options = "metadata"


続いて下記の操作を行います。

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata
ln -s /mnt/c/Users/[Username]/.ssh/ ~/.ssh
cd ~/.ssh
chown [Username] *
chmod 600 *

具体的に何をしているのかというと、

  1. 一旦Windows側のファイルシステムをアンマウントして、
  2. wsl.confで設定したのと同様の設定でマウントしなおし、
  3. パーミッションを正しく設定しなおしてる

って感じです。

これで、再起動を行っても問題なく、WSLからWindows側の設定でSSHが使い続けられるようになります。

追記 [2020/12/23]

sshで多段プロキシを利用する際に、ProxyCommandを記載すると思うのですが、

ProxyCommand ssh [踏み台サーバー] -W %h:%p

ではなく

ProxyCommand ssh.exe [踏み台サーバー] -W %h:%p

と記載しないと

CreateProcessW failed error:2
posix_spawn: No such file or directory

Windows側でプロセスの立ち上げができず、エラーで動きません。
ちなみにWindows側のフルパスで記載をしていると、もちろんWSL側ではパスの解決ができないのでエラーで動きません。
要注意です。