Acabo de actualizar Snow Leopard a Lion, y mis trabajos cron que usan ssh han dejado de funcionar. Parece que ssh-agent ya no funciona como se esperaba.
Aquí hay una versión detallada de mi script llamado desde el cron que funcionó muy bien en Snow Leopard:
#!/bin/bash
whoami # just to verify I'm running as myself, not root
ssh-agent # just to see what it outputs
eval 'ssh-agent'
ssh -vvv REMOTESERVER ls
Cuando se ejecuta desde el símbolo del sistema, esta secuencia de comandos funciona como se esperaba.
Cuando se ejecuta desde cron, no funciona. La salida de ssh-agent parece normal:
SSH_AUTH_SOCK=/tmp/ssh-QRxPUMRxbu/agent.17147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17148; export SSH_AGENT_PID;
echo Agent pid 17148;
Agent pid 17150
Pero la salida ssh -vvv
muestra que falla justo cuando se debe leer la clave privada:
debug1: Server accepts key: pkalg ssh-dss blen 818
debug2: input_userauth_pk_ok: fp ...
debug3: sign_and_send_pubkey: DSA ...
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug2: no passphrase given, try next key
En otras palabras, espera que escriba la frase de contraseña para ~/.ssh/id_dsa
, que por supuesto no funciona en las tareas cron.
Todo esto funcionó en Snow Leopard.
Tenga en cuenta que tengo la configuración de Keychain Access para que ssh
, ssh-agent
y ssh-add
puedan leer mi frase de contraseña para mi archivo .ssh/id_dsa
; como resultado, puedo SSH desde un indicador de terminal sin alguna vez tener que ingresar mi frase de contraseña.
¿Este problema que necesito para ejecutar ssh-add
en algún momento de mi proceso de inicio de sesión? Ejecutarlo desde un indicador de bash estándar no ayuda a la tarea de cron (aunque, curiosamente, me pide mi frase de contraseña ... lo que creo que no es necesario para la configuración de Acceso a Llavero).
NOTA 1 - antes de redirigirme, soy consciente de que hay una pregunta similar aquí (
Mac OS X Lion y sshpass ) pero se trata específicamente de un programa sshpass
que no uso (aunque creo que esta pregunta también sería respondida por éste).
NOTA 2 - Me doy cuenta de que las claves SSH sin frase de contraseña resolverían mi problema; sin embargo prefiero no ir por esta ruta.