Yura YuLife

ITエンジニアの覚え書き。

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