Vagrant upした時にAuthentication failureになった

最近Vagrantを立ち上げることが増えてきたので、その時にハマったメモを。
今までの記事のような解説スタイルではないのであしからず。

起きたこと

Vagrantfileにこんな感じで記載して

 ❯ cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos-6.4"
  config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210.box"
  config.vm.hostname = "ressy-host"

vagrant init(Vagrantfileを作成する)を実行する

 ❯ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

そんで仮想マシンを立ち上げようとしたら。。。

 ❯ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos-6.4' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
...
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...

default: Warning: Authentication failure. Retrying...が何度も表示されてvagrant upが完了しない。
という状態になりました。
※ 'vagrant ssh'で仮想マシンに入ることはできました。

sshまわりの設定を疑う

vagrant upが終了しないので、ctrl + Cで中断。

    default: Key inserted! Disconnecting and reconnecting using new SSH key...
    default: Warning: Authentication failure. Retrying...

この辺のメッセージでググると、仮想マシンssh周りの設定が影響していることが多いらしい。

例えばこの記事によると、「秘密鍵仮想マシン内の公開鍵がマッチしていない」ということが起きて、起動に失敗することがあるらしい。
詳細はリンク先の記事を参照。
vagrant up でAuthentication failure. Retrying... · NetCommons3/NetCommons3 Wiki · GitHub

なので、公開鍵の中身を確認してみる。

 ❯ vagrant ssh-config

Host default
...
  IdentityFile <秘密鍵へのパス>/private_key
...

秘密鍵の場所がわかったので、公開鍵を生成(表示だけ)してみる。

 ❯ ssh-keygen -yf <秘密鍵へのパス>/private_key
ssh-rsa AAAAB3Nz......

続いて、仮想マシン内の公開鍵を見ている。
vagrant upは正常終了していませんが、vagrant ssh仮想マシンに入ることはできるみたい。

 ❯ vagrant ssh
vagrant@127.0.0.1's password:
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

っで、authorized_keysを見てみる。

[vagrant@localhost ~]$ cat .ssh/authorized_keys
ssh-rsa AAAAB3Nz......

一緒だった。
秘密鍵と公開鍵は一致しているけど認証ができてないってことか。
.ssh/authorized_keysパーミッションが怪しいと踏んだので見てみる。

[vagrant@localhost ~]$ ls -l .ssh/authorized_keys
-rw-rw-r-- 1 vagrant vagrant 389 1112 04:30 2016 .ssh/authorized_keys

664になってた。
これが原因っぽいのでパーミッション600になおす。

[vagrant@localhost ~]$ chmod 600 .ssh/authorized_keys

Vagrantをあげ直してみる。

 ❯ vagrant halt
 ❯ vagrant up

今度はうまくいった。
色々気になるところはあったけど、とりあえず起動したのでよし。

最後に

今日は自分がVagrant周りをいじった時にうまくいかなかった部分の殴り書きメモを書かせていただきました。
そういえば、Vagrantについては解説の記事とかは書いていませんね(勉強中ですが)。
近々、Vagrantって何?みたいな記事を書こうと思います。