自由課題

学んだり、考えたり、試したりしたこと。

vagrant sshがスリープすると切断される件

MBPでVagrantを使っている最中にスリープさせると、スリープ復帰後SSHが切断される現象が起きてかなり不便だったので他に困っている人がいないか調べてみました。 他に困っている方がいるかも知れないので備忘録ついでに書いておきます。

現象

vagrant sshで接続したままスリープさせてスリープ復帰すると

Connection to 127.0.0.1 closed by remote host.

というメッセージを残してSSHが切断されていました(100%再現)。繋ぎ直せばよいのですが、編集中の内容が破棄されていたりするので地味に不便でした。

対応策

  • 発生環境
    • 現象が起きるのはOSX版を使っている人だけらしい
  • 対策
    • VirtualBoxを4.3.2にバージョンダウンする。
      (もしくは4.3.8のリリースを待つ
      (もしくは最新のソースをビルドする))

ググってみると、当該の現象がVagrantGitHubのissueに登録されていました。
https://github.com/mitchellh/vagrant/issues/2691
しかもCloseと書いているので期待して読み進めると...
作者のMitchell Hashimotoさんが、「よくわからないのでコミュニティの誰かがもっと情報くれるまで一旦クローズするわ」(超訳)という感じだったのでがっくりしました。

が、一応issueの一番下まで読んだところ、VirtualBoxのバグっぽいということと、ワークアラウンドがありそうなことが書いてありました。 下記がVirtualBoxのチケットです。
https://www.virtualbox.org/ticket/12441#comment:16
結局のところ、VirtualBoxの4.3.4以降にバグがあるそうです。
チケットの記述を読むと、どうやら修正は4.3.8になる模様です。ただしぱっと見た限りでは4.3.8がいつリリースされるのかはわかりませんでした。

ということで、とりあえずVirtualBoxのバージョンを4.3.2に戻したところ、スリープ復帰後も正常に動作するようになりました。なお、私の環境ではバージョンダウン後にVagrantのイメージを作りなおさないとうまく動作しませんでしたので、その点注意が必要かもしれません。