knife-solo v0.5.0から
- 最初はrootで
knife solo bootstrap my.host.jp -x root
する - 続けてそのときに作ったユーザ
some_user
でknife solo cook my.host.jp -x some_user
する
としたときにエラーが発生するようになった。
原因はknife-solo v0.5.0でSSHのControlMasterがサポートされるようになったことで、これがあると最初にsshしたときのコネクションをホストごとに使いまわし続けてしまうためらしい。
対応方法としては3つあって、
1. --ssh-control-masterオプションを指定する
knife-soloを叩くときに指定できる。
$ knife solo cook my.host.jp --ssh-control-master no
ただ毎回は面倒くさいので設定でなんとかしたい。
2. ControlMasterを無効化する
~/.ssh/config
に次のように記載する。
Host * ControlMaster no
ただ無効にしちゃうとControlMasterの恩恵を受けられなくなるので、それはそれで避けたい。
3. ControlPersistでを設定する
OpenSSH 5.9から入ったControlPersistでコネクションのタイムアウトを設定できるようになったとのことなので、~/.ssh/config
に次のように記載する。
Host * ControlPersist 10 # 10秒で切る
ちなみに手元のsshのバージョンは次のコマンドで調べられる。
$ ssh -V OpenSSH_6.9p1, LibreSSL 2.1.8