スクリプトからsshの利用時の落とし穴
PHPのexec()でシェルスクリプトを実行し、リモートホスト上のコマンドをsshで実行してローカルファイルをリダイレクトで渡す、という処理をしたかったのだが、上手く処理が進まずに開発が止まってしまっていた。
ssh のログでは以下のように出ている。
Host key verification failed.
ssh に -vvv オプションを付けて詳細なログを表示してみたがやっぱり謎のまま。
結局、以下のように実行してみると、このユーザ(apache)でそのホストへの接続が初めてだったので ~/.ssh/known_hosts にファイルを追加しようとする場面で yes/no の入力を受け付けられないのが原因だったようだ。
% sudo -u apache ssh hogehoge ls < file_in > file_out The authenticity of host 'hogehoge (192.2.0.1)' can't be established. RSA key fingerprint is 8e:61:d4:45:bb:22:62:70:ff:1b:8f:aa:1e:95:3a:1c. Are you sure you want to continue connecting (yes/no)?
ログで確認しようとせずに、さっさと実行して試せば良かった。