Vagrantfile を色々いじりながらあれこれ作業をしていた(主にポート設定)所、「Connection timeout. Retrying…」が無限ループ。
vagrant destroyで環境一掃してやろうかと思ったが、本質的ではないのでしっかり解決することにした。
起きた事
Vagrantfileをいじって vagrant reload した所、以下のような感じに。
==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 => 2235 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2235 default: SSH username: vagrant default: SSH auth method: private key default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying... default: Error: Connection timeout. Retrying...
考察
こちらを見てみると、どうもGUIを立ち上げるのが王道らしい。
コメントアウトして試してみたものの、残念ながらGUIは立ち上がったものの依然タイムアウトはそのまま。
どうやら秘密鍵がおかしな事になっている模様なので、一旦 vagrantサーバ上にある公開鍵と ローカルの秘密鍵を消すことにしよう。
ローカルの秘密鍵のパスは以下のコマンドで確認可能なので 確認の上削除。
vagrant ssh-config
続いてサーバ上の秘密鍵のパスの例。
/home/vagrant/.ssh/authorized_keys
ここで 任意のエディタを開いて authorized_keys に記載されている該当部分の内容を削除(以下は該当部分の例)。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA (以下略)........
一旦この状態で vagrant reload してみるとどうなるだろうか。
Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 => 2235 (adapter 1) ==> default: Running 'pre-boot' VM customizations... ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2235 default: SSH username: vagrant default: SSH auth method: private key 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...
案の定 Authenticationでコケている模様。
もう手元で適当に動かす環境であれば自前で鍵をつくる方が手っ取り早そうだ。
というわけで…
解決策
ssh-keygen -t RSA
にて秘密鍵と公開鍵のセットを作成する。
コマンドを実行すると対話形式で色々聞かれるが、基本的にデフォルトでOK。
作成したら、id_rsa.pub の内容を Vagrantサーバ上の authorized_keys の中にコピーしてあげて、id_rsaの方をローカルに置いておく。
その後、Vagrantfile に以下の内容を記入する。
config.ssh.private_key_path = "path/to/id_rsa" config.ssh.forward_agent = true
Windowsユーザの場合、ディレクトリパスは「\」ではなく「\\」でエスケープしてあげる必要があるので注意。
config.ssh.private_key_path = "C:\\Users\\hoge\\path\\to\\id_rsa" config.ssh.forward_agent = true
よし、動かしてみよう。
==> default: Attempting graceful shutdown of VM... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 => 2235 (adapter 1) ==> default: Running 'pre-boot' VM customizations... ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2235 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... ==> default: Machine booted and ready!
一瞬 タイムアウトが出てヒヤッとするが、うまいこと認証できた模様。
Written by Nisei Kimura ( 木村 仁星 )