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 l'output ssh -vvv
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.
Notate che ho impostato il Keychain Access in modo che ssh
, ssh-agent
e ssh-add
possano leggere la mia passphrase per il mio file .ssh/id_dsa
- di conseguenza posso SSH da un prompt del terminale senza mai dover inserire la mia passphrase.
Questo problema è necessario per eseguire ssh-add
ad un certo punto del mio processo di accesso? Eseguirlo da un prompt bash standard non aiuta il cron job (anche se, stranamente, mi chiede la mia passphrase ... che non penso sia necessaria b / c della configurazione di Accesso Portachiavi).
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; tuttavia preferirei non seguire questa strada.