In the man page for keychain it says: To load keychain variables from a script (for example from cron) and abort unless id_dsa is available:
# Load keychain variables and check for id_dsa [ -z "$HOSTNAME" ] && HOSTNAME=`uname -n` . $HOME/.keychain/$HOSTNAME-sh 2>/dev/null ssh-add -l 2>/dev/null | grep -q id_dsa || exit 1 However, when run from cron, HOME is set to /var/log and not the home directory of the cron job user so this doesn't work.
