crontabでscpを使うとPermission deniedされてしまう
scpをするようなシェルスクリプトを作った時に、コマンドラインから実行するとちゃんとscpでファイルコピーできるのに、crontabに登録して実行するとPermission denied(publickey)
と怒られてしまう、という事象で結構ハマりました。
なぜ動かなかったかというと、鍵にパスワードがかかっていたというだけのことでした。
ターミナルから利用すると、最初の1回だけパスワードを求められて次からはキーリングに保存されるので、パスワードがかかっていることを意識しないんですよね。 でも、cronはキーリングにアクセスできないのでpublickeyで認証できないと。
問題は単純で難しいっす。
hoge.sh
#!/bin/sh scp -i ~/.ssh/hoge_key ~/hoge.txt hoge@example:/user/hoge/tmp/
cronのログ
Permission denied, please try again. Permission denied, please try again. Permission denied (publickey). lost connection
参考URL