Hello
Depuis un moment, j'ai un problème d'authentication ssh (Public key) avec mon script de backup utilisant rsync, mais le problème ne survient que quand j'utilise crontab pour le lancer. Manuellement il fonctionne bien.
Je lance X avec: ssh-agent startx, puis ssh-add pour mettre la clé.
Il y a les bons droits en execution sur le script.
Quelqu'un aurait une idée pour résoudre ce problème ? Ca fait un moment que je cherche mais je tourne en rond.
# Infos supplémentaires
Posté par Heldwin . Évalué à 1.
Ce n'est que lors de backup distant qu'il plante.
Peut-être qu'il faut que je fasse passer une variable à crontab ?
le script utilise #!/bin/sh, et la commande:
rsync -av -e ssh repertoire root@domaine:/destination
De root à root, avec juste une clé publique qui fonctionne si je lance le script sans crontab.
Si vous avez besoin de plus d'infos, je traine par là :)
Merci
[^] # Re: Infos supplémentaires
Posté par daggett . Évalué à 1.
Ben je crois que tu as donné toi-même la réponse à ton problème !..
Forcément , dans le cron , personne n'a entré ta passphrase, donc aucune authentification par clef ne peux marcher.
(Pour rappel, ssh-agent ne donne accès à ta clef qu'à ses fils et leur descendance (donc X, ton environnement de bureau, ton shell), pas aux autres (donc, pas cron))
Maintenant pour régler ça, il te faut sûrement une autre clef, qui ne soit pas protégée par passphrase.
[^] # Re: Infos supplémentaires
Posté par Heldwin . Évalué à 1.
Pourtant ca marchait avant, puis maintenant je recois des messages: Permission denied (Public Key). Depuis une mise à jour serveur il me semble.
Il n'y a pas un moyen de garder la pass phrase et d'utiliser cron ? ou de lancer crontab comme fils de ssh-agent ?
[^] # Re: Infos supplémentaires
Posté par daggett . Évalué à 1.
Il suffirait de fournir à ton script cron, les $SSH_AGENT_PID et $SSH_AUTH_SOCK de ta session, pour qu'il puisse se connecter à l'agent. Par contre je viens d'essayer chez moi ça ne marche pas, peut-être que ça dépend des versions/distribs.
[^] # Re: Infos supplémentaires
Posté par Heldwin . Évalué à 1.
Je pensais qu'il y avait une histoire de variables à mettre, mais pas eu trop le temps de regarder ca.
J'essayerais d'insérer ces variables d'environnement demain matin. J'utilise une RHEL 4 migré en CentOS 4.5.
Si ca ne marche pas chez moi non plus, vais bien trouver un moyen de le faire :) Et posterais au cas où je trouve une solution.
En tout cas, je te remercie pour ton aide.
[^] # Re: Infos supplémentaires
Posté par wismerhill . Évalué à 1.
[^] # Re: Infos supplémentaires
Posté par Heldwin . Évalué à 1.
J'ai réussi, mais je dois encore faire des tests dessus.
Sur CentOS:
Dans ~/.bash_profile :
*********************
eval `ssh-agent -s`
ssh-add < /dev/null
ssh-add ~/.ssh/id_rsa < /dev/null
echo "SSH_AGENT_PID=$SSH_AGENT_PID" > ~/.ssh-agent
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> ~/.ssh-agent
echo "export SSH_AGENT_PID SSH_AUTH_SOCK" >> ~/.ssh-agent
*********************
Dans le script cron:
*********************
. ~/.ssh-agent
*********************
Je dois regarder car cela me laisse plusieurs "ssh-agent -s" avec des pid différents dans ps -aux. Je pense tuer tuer le PID par ~/.bash_logout.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.