He puesto esta secuencia de comandos unida para actualizar diariamente una carpeta de repositorios Github bifurcados. Funciona bien si lo llamo desde un aviso, pero no puedo 'averiguar cómo hacer que utilice mi id_rsa de manera confiable cuando se ejecuta como un trabajo cron. el eval 'ssh-agent'
es un intento de hacer justamente eso, pero no parece tener ningún efecto positivo.Accediendo a la clave SSH desde el script bash ejecutándose a través de un trabajo cron
#!/bin/sh
LOGPATH=log.txt
eval 'ssh-agent'
cd /path/to/update/folder
echo "-------START UPDATE-------">$LOGPATH
echo "Updating repos:">>$LOGPATH
date "+%F %T">>$LOGPATH
COUNT=1
find . -maxdepth 1 -type d | while read dir; do
cd "$dir"
LEN=$"${#dir}"
if [ $LEN != "1" ]
then
echo "*********">>$LOGPATH
echo "$COUNT. " ${dir:2}>>$LOGPATH
/usr/local/bin/git pull upstream master>>$LOGPATH 2>> $LOGPATH
/usr/local/bin/git push origin master>>$LOGPATH 2>> $LOGPATH
let COUNT=COUNT+1
fi
cd "$OLDPWD"
done
echo "-------END UPDATE-------">>$LOGPATH
exit 0
Esta es probablemente una manera terriblemente ineficiente para ir sobre el proceso en general, pero funciona y no se te ocurra lo ven. Si pudiera hacer que usara mi creds, estaría eufórico.
Nunca he ejecutado ssh-add, pero estoy en OS X, así que supongo que es todo lo que está sucediendo para mí. Crear una clave sin contraseña y usar ssh-add parece haber hecho el truco. También hice los bits de host en .ssh/config como sugirió Greg. ¡Ahora funciona! Gracias –