Tener un problema muy extraño. Creé un pequeño script bash que ejecuta un comando en un host remoto a través de ssh (usando la autenticación de clave pública).
Cuando ejecuto este script manualmente desde la línea de comando, funciona bien, pero cuando se coloca en /etc/cron.hourly falla con Permission denied, please try again.
error.
- Establezco explícitamente la clave en el script usando
ssh -i /root/.ssh/id_rsa user@remote "command"
; - el script se está ejecutando como root (agregué una
echo `id` > /tmp/whoami.log
para verificar dos veces ); y - la clave ssh no está protegida con contraseña ...
El sistema es el servidor Ubuntu 12.04, no tengo mucho acceso en el lado remoto para solucionar problemas, pero como dije, ejecutar ssh manualmente o el mismo script bash desde la línea de comandos funciona.
¿Alguna idea de por qué sucede esto o cómo solucionarlo?
actualizar
Resulta que estaba equivocado, y la clave ssh estaba protegida con contraseña (con el llavero cargando el agente ssh), de ahí por qué falló en un script pero no cuando se ejecutaba desde la sesión bash. Agregar . ~/.keychain/$HOSTNAME-sh
a mi script resolvió el problema (gracias a @grawity que me señaló en la dirección correcta y proporcionó una respuesta integral).
SSH_AUTH_SOCK
está relacionado (aunque estoy feliz de intentar algo). Estoy accediendo al archivo de claves directamente, y el archivo de claves no está protegido por contraseña. En cuanto a KRB5CCNAME
una búsqueda rápida mostrada, esto es algo que ver con Kerberos. Una vez más, no veo la conexión con este problema, pero tal vez me estoy perdiendo algo aquí ...
-v
opción a ese ssh
comando ...
ssh -i
comando en ambos casos ... Intentaré desarmar esas variables en el script y veré. Buena sugerencia para agregar -v
, yo también lo agregaré.
SSH_AUTH_SOCK
yKRB5CCNAME
variables de entorno.