【Linux】cronでsftp転送に失敗していた原因

毎日取得していたバックアップが、 取れていないことに気がついた。 いつからかは、よくわからない。

バックアップするファイルの生成は、 できていて、sftp転送が失敗しているのがわかった。

バックアップ処理を、shellから手動で実行すると、 sftp転送に成功したが、cronからの実行では失敗する。

ログを出すようにすると、 Permission denied (publickey). とでている。

環境変数や、権限を疑ったが、そうではないようだ。 お手上げなのでsftpに-vを着けて詳細を出力させる。

手動実行とcronからの実行時のログを比較した。

どうやら手動の時は、ssh-agentが認証しているようだ。 確かに、パスフレーズ付きのカギを指定していた。 なんてこった。

バックアップ用にパスフレーズの無い秘密鍵用意して 設置したら、バックアップがとれる用になった。

前に秘密鍵を交換するときに、間違えたのが原因。 ファイル名が同じだったので、パスフレーズ付きの ものに変えてしまったのだ。

これを機にバックアップ用の秘密鍵は、 ファイル名を変えるようにした。