Appena aggiornato da Snow Leopard a Lion, i miei lavori cron che usano ssh hanno smesso di funzionare. Sembra che ssh-agent non funzioni più come previsto.
Ecco una versione bowdlerized del mio script chiamato-da-cron che ha funzionato benissimo con 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
Quando viene eseguito dal prompt dei comandi, questo script funziona come previsto.
Quando viene eseguito da cron, non funziona. L'output di ssh-agent sembra normale:
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
Ma il ssh -vvv
l'output mostra che fallisce proprio quando la chiave privata deve essere letta:
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
In altre parole, mi aspetto che scriva la passphrase per ~/.ssh/id_dsa
, che ovviamente non funziona nei lavori cron.
Tutto questo ha funzionato in Snow Leopard.
Nota che ho configurato il portachiavi in modo che ssh
, ssh-agent
, e ssh-add
sono autorizzati a leggere la mia passphrase per il mio .ssh/id_dsa
file - come risultato posso SSH da un terminale senza dover inserire la mia passphrase.
È questo problema che devo eseguire ssh-add
ad un certo punto nel mio processo di accesso? Eseguirlo da un prompt bash standard non aiuta il cron job (anche se, stranamente, mi viene richiesta la mia passphrase ... che non penso sia necessaria b / c della configurazione di Keychain Access).
NOTA 1 - prima di reindirizzarmi - Sono consapevole che c'è una domanda simile qui ( Mac OS X Lion e sshpass ) ma riguarda specificamente un programma sshpass
che non uso (anche se credo che a questa domanda si possa rispondere anche questa).
NOTA 2 - Mi rendo conto che le chiavi SSH passphrase-less risolverebbero il mio problema; comunque preferirei non seguire questa strada.