vagrant で SSH authentication failed! とか出た場合の対処法

Mar 25, 2013  

vagrant で

$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

こんなエラーが出た時の対処方。

環境は

  • ホスト: Mac (OSX 10.8.3)
  • ゲスト: Ubuntu 10.04.4 LTS

やりたいこと

  • vagrant up で起動した VM に ssh を使った password-less ログインしたい
  • vagrant halt に成功したい

やっていたこと

  • ゲスト側の ~/.ssh/authorized_keys にホスト側の公開鍵を書いておく
  • ゲスト側の ~/.ssh/authorized_keys の権限を 600 にしておく
  • ホスト側の ~/.vagrant.d/insecure_private_key の権限が (user):staff になっている事を確認

解決の仕方

以下を参考

virtualbox - SSH Basics on Vagrant VMs - Super User

ホスト側の ~/.vagrant.d/boxes/<yourbox>/include/Vagrantfile に、秘密鍵のパスを設定する必要があるらしい。

その部分はこんな感じに書いた。

Vagrant::Config.run do |config|
  # This Vagrantfile is auto-generated by `vagrant package` to contain
  # the MAC address of the box. Custom configuration should be placed in
  # the actual `Vagrantfile` in this box.
  config.vm.base_mac = "XXXXXXXXXXXX"
  config.ssh.private_key_path = "~/.ssh/id_rsa" # ここを追加
end

念のためホスト側の ~/.ssh/id_rsa.pub をゲスト側の ~/.ssh/authorized_keys にコピーしなおしたら、password-less ログインも vagrant halt もうまくいった。

めでたしめでたし。