Je viens de passer de Snow Leopard à Lion, et mes tâches cron qui utilisent ssh ont cessé de fonctionner. Il semble que ssh-agent ne fonctionne plus comme prévu.
Voici une version bowdlerized de mon script appelé depuis cron qui fonctionnait très bien sous 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
Lorsqu'il est exécuté à partir de l'invite de commandes, ce script fonctionne comme prévu.
Lorsqu'il est exécuté à partir de cron, cela ne fonctionne pas. La sortie de ssh-agent semble 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
Mais la ssh -vvv
sortie montre qu'elle échoue juste au moment où la clé privée doit être lue:
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 d'autres termes, il s'attend à ce que je tape la phrase secrète pour ~/.ssh/id_dsa
, ce qui bien sûr ne fonctionne pas dans les tâches cron.
Tout cela a fonctionné dans Snow Leopard.
Notez que j'ai la configuration de l'accès au trousseau pour que ssh
, ssh-agent
et ssh-add
soient autorisés à lire ma phrase secrète pour mon .ssh/id_dsa
fichier - en conséquence, je peux SSH à partir d'une invite de terminal sans jamais avoir à entrer ma phrase secrète.
Est-ce que ce problème que je dois exécuter ssh-add
à un moment donné de mon processus de connexion? L'exécuter à partir d'une invite bash standard n'aide pas le travail cron (bien que, bizarrement, il me demande ma phrase secrète ... qui, je pense, n'est pas nécessaire en raison de la configuration de l'accès au trousseau).
NOTE 1 - avant de me rediriger - je suis conscient qu'il y a une question similaire ici (
Mac OS X Lion et sshpass ) mais il s'agit spécifiquement d'un programme sshpass
que je n'utilise pas (bien que je pense que cette question répondra également à celle-ci) ).
NOTE 2 - Je me rends compte que les clés SSH sans mot de passe résoudraient mon problème; mais je préfère ne pas suivre cette voie.