WSL(Windows Subsystem for Linux/Bash on Windows)でvagrant sshができない問題とその対処
WSLで vagrant ssh
しようとしたら Permission denied (publickey).
と言われてログインできない事象に遭遇したので対処した。
まず、vagrant ssh
時に実行されるSSHコマンドを自分で書いて、どういうエラーなのかを確認したところ、下記のようになっていた。
% ssh vagrant@127.0.0.1 -p2222 -i .vagrant/machines/default/virtualbox/private_key @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '.vagrant/machines/default/virtualbox/private_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key ".vagrant/machines/default/virtualbox/private_key": bad permissions Permission denied (publickey).
VMの鍵である .vagrant/machines/default/virtualbox/private_key
のパーミッションが0777になっているため繋げられないとのことであった。
というのも、今回Vagrantを導入したリポジトリをWindowsのファイルシステム上( /mnt/c
配下 )にしているため、パーミッションがデフォルトではすべて0777になる。
結果として、生成された private_key
も0777になり、SSHクライアントに怒られる。
解決策
最近のWSLではWindowsのファイルシステムについてもパーミッションを自由に設定できるようになったらしい。 ただしデフォルトではその機能が有効になっていないので、有効にする必要がある。
まず、 /etc/wsl.conf
を下記の内容で作成する
[automount] options = "metadata"
設定後WSLを再起動する必要がある。 Windowsを起動させたまま再起動させるのはめんどくさそうだったので、普通にPCごとリブートさせた。
再起動後、private_keyのパーミッションを0600にしたら完了。普通に vagrant ssh
できるようになった。
$ chmod 600 .vagrant/machines/default/virtualbox/private_key $ vagrant up $ vagrant ssh