No.261


【Vagrant】SSH設定でタイムアウトするとき

SSHの設定で止まったらまず確認

 Vagrant使いのハマリどころといえばSSH関連設定ではないだろうか?

 「SSHの鍵確認に行くよ」というメッセージが表示されたあと、

SSH auth method: private key

 延々とリトライが繰り返される。

Warning: Authentication failure. Retrying...

 一番の問題はこれを引き起こす原因が複数あること。死ぬ。


Vagrantのタイムアウト設定

 まず最初はこれを確認。

 単純に仮想環境の起動が間に合わずにタイムアウトしているだけかもしれない。
 タイムアウト時間を長めにして様子を見てみよう。

config.vm.boot_timeout = 600

 …まあ、これで直ったためしは無いけどね!


ネットワークアダプタの設定

 次にはこれ。ネットワークアダプタの認識だ。

 Vagrant、Virtualboxのバージョンと使おうとするboxの「相性」的なものによって発生するらしい。
 自分は CentOS 7.4 で発生した。

 VitrualBoxからその環境の「設定」を開き「ネットワーク」タブをクリックする。
 「ケーブル接続」のチェックが外れていたら「何らかの原因で」ネットワークアダプタが有効になっていない。「何らか」が何かは不明。死ぬ。

 とりあえずVagrantfileに下記の記述を追加して強制的に有効にしてしまおう。
 個人的経験では「config.vm.network」の前に書くのが良いが、オカルトかもしれない。

config.vm.provider 'virtualbox' do |vb|
  vb.customize ['modifyvm', :id, '--cableconnected1', 'on']

end

SSH接続用鍵ファイルの初期化

 SSH接続用鍵ファイルがホストとゲストで食い違ってしまうケースがある。

Warning: Authentication failure. Retrying...

 が表示されている場合はほとんどこれだと思う。
 ちなみに「何らか」が何かはやっぱり不明。死ぬ。

 検索するといろいろ解決方法が出てくる。多くは自分で鍵ファイルを作り直して自分でホストとゲストに設置するというものだが、自分は下記のような方法で対応している。

①鍵ファイルの位置を把握

 ホストマシンでSSH関連情報を表示する。

vagrant ssh-config

 表示されるデータの中の下記を確認。

IdentityFile プライベートキーの場所
②鍵ファイルの削除

 ばっさり削除しよう。怖い人はリネームでもOK。

③仮想環境の作り直し

 腐った証明書の設定されている環境を破棄して

vagrant destory

 綺麗に作り直してしまおう。

vagrant up

 自分はたいていこれで上手くいっている。

 ん? destroyできないって?
 その場合は鍵を作り直してホストとゲストの両方に置き直すしかないですな!(投げやり