Avere un problema molto strano. Ho creato un piccolo script bash che esegue un comando su un host remoto tramite ssh (usando l'autenticazione con chiave pubblica).
Quando eseguo manualmente questo script dalla riga di comando, funziona bene, ma quando viene inserito in /etc/cron.hourly non riesce con Permission denied, please try again.
errore.
- Ho impostato esplicitamente la chiave nello script utilizzando
ssh -i /root/.ssh/id_rsa user@remote "command"
; - lo script è in esecuzione come root (ho aggiunto un
echo `id` > /tmp/whoami.log
per ricontrollare); e - la chiave ssh non è protetta da password ...
Il sistema è il server Ubuntu 12.04, non ho molto accesso sul lato remoto per la risoluzione dei problemi, ma come ho detto, eseguendo ssh manualmente o lo stesso script bash dalla riga di comando funziona.
Qualche idea sul perché questo accada o su come risolverlo ??
aggiornare
ho scoperto che mi sbagliavo, e la chiave ssh era protetta da password (con il portachiavi che caricava l'agente ssh), quindi perché non è riuscita da uno script ma non durante l'esecuzione dalla sessione bash. L'aggiunta . ~/.keychain/$HOSTNAME-sh
alla mia sceneggiatura ha risolto il problema (grazie a @grawity che mi ha indicato la giusta direzione e ha fornito una risposta completa).
SSH_AUTH_SOCK
sia correlato (anche se sono felice di provare qualsiasi cosa). Accedo direttamente al file chiave e il file chiave non è protetto da password. Per quanto riguarda KRB5CCNAME
una rapida ricerca, ciò ha a che fare con Kerberos. Ancora una volta - non vedo la connessione a questo problema, ma forse mi manca qualcosa qui ...
-v
un'opzione a quel ssh
comando ...
ssh -i
comando in entrambi i casi ... Proverò a disinserire quelle variabili nello script e vedrò. Un buon suggerimento da aggiungere -v
: lo aggiungerò anch'io.
SSH_AUTH_SOCK
eKRB5CCNAME
le variabili di ambiente.