LoginSignup
5
6

More than 5 years have passed since last update.

WSLからVagrantマシンにsshする方法

Posted at

概要

通常、Vagrantで立てた仮想マシンにsshで接続する際はVagrantfileがある場所でvagrant sshを行いますよね?
ただ、毎度そのディレクトリに移動するのは面倒くさい。
そこで、ssh vagrantでアクセスできるようにしてみました。

.ssh/configの作成

vagrantでは、仮想マシンにアクセスするための情報を確認するためのコマンドが用意されている。
手順は以下の通り

$ vagrant up
// ~起動中のログ~
$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /mnt/c/Users/{VagrantfileのあるPath}/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
$ vagrant ssh-config --host vagrant >> ~/.ssh/config && chmod 600 ~/.ssh/config

とりあえず上記のコマンドを入力するとsshで接続するための情報が書き出されます。
今回はホスト名をvagrantと指定していますが、必要に応じて好みの名前に変更してください。

お試しで接続

ここで問題なのが、VagrantfileをWindowsのドライブ下にある場合です。
上記の記述を見るとわかるように、vagrantでは仮想マシンにアクセスするための公開鍵がIdentityFileという項目に記載されています。
このまま、sshで接続しようとすると以下のようになります。

$ ssh vagrant
vagrant@127.0.0.1: Permission denied (publickey,password).

このエラーが出る原因は公開鍵にあります。
公開鍵のパーミッションを確認してみましょう。
場所は先程のIdentityFileに記載がある場所です。

$ cd /mnt/c/Users/{VagrantfileのあるPath}/.vagrant/machines/default/virtualbox
$ ls -l
total 4
// ~ファイル一覧~
-rwxrwxrwx 1 hoge hoge 1675 Jan 30 22:19 private_key

公開鍵のパーミッションが777になっていますね。
sshコマンドを使用する場合、公開鍵のパーミッションは600になっている必要があります。
そのため、パーミッションを変更してみましょう。

$ chmod 600 private_key
$ ls -l
total 4
// ~ファイル一覧~
-rwxrwxrwx 1 hoge hoge 1675 Jan 30 22:19 private_key

変わってない…
あれれ~おかしいぞ~
何故かと言うと、windowsのドライブ下ではパーミッションという概念が存在しないからです。
困った…

しかし、ご安心あれ。
WSLではwindows管理下のファイルでもパーミッションをつけることが出来ます。

/etc/wsl.confの作成

wsl.confというファイルを作成してWSLの設定をしていきます。
すでに存在する場合は書き足し、ない場合は作成してください。

$ sudo vim /etc/wsl.conf
// 以下の内容を追記
[automount]
options = "metadata"

これだけです。
これにより、パーミッションの設定が可能になります。
(もしかしたら再起動の必要があるかも?)
再度パーミッションを設定してみましょう

$ chmod 600 private_key
$ ls -l
total 4
// ~ファイル一覧~
-rw------- 1 hoge hoge 1675 Jan 30 22:19 private_key

できたー!
後はいざsshで接続

$ ssh vagrant
// ~ログ色々~
vagrant@vagrant:~$

無事接続完了しましたね。
お疲れ様でした。

まとめ

今回はWSLからsshコマンドでvagrantで立てた仮想マシンに接続する方法をまとめました。
わざわざ設定するのが面倒くさい場合、/home/{ユーザー名}/.ssh下などにファイルを移動しchmodを行うことで変更も可能です。
その場合は.ssh/configの設定も書き換えてください。

参考

WSLからマウントしたWindowsのドライブでchmodしたい

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6