Ich habe gerade ein Upgrade von Snow Leopard auf Lion durchgeführt und meine Cron-Jobs, die ssh verwenden, funktionieren nicht mehr. Es scheint, dass ssh-agent nicht mehr wie erwartet funktioniert.
Hier ist eine Bowdler-Version meines Called-from-Cron-Skripts, die unter Snow Leopard hervorragend funktioniert hat:
#!/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
Wenn dieses Skript an der Eingabeaufforderung ausgeführt wird, funktioniert es wie erwartet.
Wenn von Cron ausgeführt wird, funktioniert es nicht. Die Ausgabe von ssh-agent sieht normal aus:
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
Die ssh -vvv
Ausgabe zeigt jedoch, dass es nicht richtig funktioniert, wenn der private Schlüssel gelesen werden soll:
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
Mit anderen Worten, es wird erwartet, dass ich die Passphrase für eingebe ~/.ssh/id_dsa
, was bei Cronjobs natürlich nicht funktioniert.
Dies alles funktionierte in Snow Leopard.
Beachten Sie, dass ich so , dass Schlüsselbund - Setup haben ssh
, ssh-agent
und ssh-add
erlaubt mein Passwort lesen für meine.ssh/id_dsa
Datei - als Ergebnis kann ich über eine Terminal-Eingabeaufforderung SSH ausführen, ohne jemals meine Passphrase eingeben zu müssen.
Ist das Problem, das ich ausführen muss ssh-add
irgendwann in meinem Anmeldevorgang muss? Das Ausführen von einer Standard-Bash-Eingabeaufforderung aus hilft dem Cron-Job nicht weiter (obwohl es mich seltsamerweise zur Eingabe meiner Passphrase auffordert ... was meiner Meinung nach in der Konfiguration von Keychain Access nicht unbedingt erforderlich ist).
HINWEIS 1 - Bevor Sie mich umleiten - Ich bin mir bewusst, dass es hier eine ähnliche Frage gibt (
Mac OS X Lion und sshpass ), aber es geht speziell um ein Programmsshpass
, das ich nicht verwende (obwohl ich glaube, dass diese Frage auch von diesem beantwortet werden würde ).
ANMERKUNG 2 - Mir ist klar, dass passphrasenlose SSH-Schlüssel mein Problem lösen würden. Ich würde es jedoch vorziehen, diesen Weg nicht zu gehen.