yujiro's blog

webエンジニアをしています。

vagrant sshしたら真っさらなサーバーになってしまうバグ

原因

virtualbox のマシンとvagrant の紐付けが解除されてしまってる

なんで解除されるかは不明

解決方法

まず virtualbox マネージャを立ち上げて同じ名前でIDが違うマシンを電源オフる

以下のコマンドを実行

$ VBoxManage list vms

マシン一覧が表示される

その中で、紐付けが解除されてしまって再度紐付けしたいマシンのidをコピーする

例えば

"meat_default_1490979151604_7470" {7bbd1077-4d67-4a7f-9576-9191fbe837c3}

であれば

{}

の中の文字列です

Vagrantfile があるディレクトリに移動して

以下を実行

$ cd .vagrant/machines/default/virtualbox

$ vi id

先程メモったidをペーストする。

Vagrantfile があるディレクトリに移動

一旦止める

$ vagrant halt

起動

$ vagrant up

すると

default: Warning: Connection timeout. 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...

が無限ループされてssh できなくなっていると思う。

これは鍵が変わってしまっているのでこうなる。

コントロール+ c で抜けて

$ vagrant ssh

してパスワード認証でログインする。

mac側で

$ cd .vagrant/machines/default/virtualbox

移動して

$ ssh-keygen -t RSA

で鍵を新たに作る。

一応、 private_key2

などの名前で保存、前のやつは残しておいた。

そのあとに 同じディレクトリに作成された公開鍵を

仮想マシンのほうの authorized_keys に貼り付ける。

んでmac側にある Vagrantfileに以下を記述

config.ssh.private_key_path = "/[Vagrant file があるディレクトリ]/.vagrant/machines/default/virtualbox/private_key2"

それで

$ vagrant halt

$ vagrant up

$ vagrant ssh

問題なくssh でログインできるかと思う