問題のポイント
- Warning: Authentication failure. Retrying… となり vagrant up が完了しない。
- 仮想マシンは起動しているものの、
vagrant ssh
するとパスワードを求められる。 - なお、Warning: Remote connection disconnect. Retrying… のエラーは該当しない。
解決策 2 つ
- vagrant ssh 後、~/.ssh/authorized_keys のパーミッションを 600 へ変更する。
- Vagrant 本体のコード、/opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/linux/cap/public_key.rb を修正する。
解決策 1 実践
エラー発生後、エラーの発生した仮想マシンへ ssh し、chmod 600 ~/.ssh/authorized_keys
でパーミッションを変更しました。
$ vagrant ssh vagrant@127.0.0.1's password: Last login: Thu Jul 21 22:42:13 2016 from 10.0.2.2 [vagrant@localhost ~]$ pwd /home/vagrant [vagrant@localhost ~]$ ll .ssh/ 合計 4 -rw-rw-r--. 1 vagrant vagrant 389 8月 15 21:02 2016 authorized_keys [vagrant@localhost ~]$ [vagrant@localhost ~]$ chmod 600 ~/.ssh/authorized_keys [vagrant@localhost ~]$ [vagrant@localhost ~]$ ll .ssh/ 合計 4 -rw-------. 1 vagrant vagrant 389 8月 15 21:02 2016 authorized_keys [vagrant@localhost ~]$ logout Connection to 127.0.0.1 closed.
この後、vagrant halt
し、vagrant up
することで再起動してみますと、エラーが出なくなりました!
解決策 2 実践
先程は仮想マシンの中身を修正いたしました。今度は、Vagrant のコードを修正いたします。
まずは、ファイル場所の特定です。public_key.rb にバグが有るとのことです。
sudo find / -name public_key.rb
することで、コードの場所がわかりましたので、GitHub のページにあった内容で修正いたします。
sudo vim /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/linux/cap/public_key.rb
にある通り、chmod 0600 ~/.ssh/authorized_keys
を mv ~/.ssh/authorized_keys.tmp ~/.ssh/authorized_keys
の次に追加します。
以上で、初回の vagrant up
の時から、エラーが発生しなくなりました♪
おわりに
Vagrant のバグということですけれども、遭遇した時は大変驚きました。あたふたしてしまいました><。
次のバージョンでは解消されるでしょうから、首を長くして Vagrant リリースを待ちますの♪
以上です。