事象
capistranoでのデプロイ実行後、プロンプトに入力した文字が表示されなくなってしまうことがある。条件は以下。
-
cap deploy
を実行する環境のシェルがbash - デプロイに使用するSSH秘密鍵にパスフレーズを設定している
- デプロイ先に複数のサーバーを設定している
原因
OpenSSHでは秘密鍵のパスフレーズを入力する際、一時的に端末(tty)オプションが変更され、ユーザーの入力を非表示にした状態でパスフレーズを入力できる。
通常は入力完了後ユーザー入力が表示されるよう端末オプションが戻されるが、
複数回パスフレーズを聞くような場合の処理がcapistranoもしくはsshkitでうまくハンドルできておらず、ユーザー入力が非表示のままの状態になってしまっていると思われる。
なお、zshの場合はコマンド完了時にシェル側で端末オプションが修正されるため発生しない。
対処
以下のコマンドで端末オプションを修正し、事象を解消することができる。
stty echo