voilà, je cherche à faire de la synchro entre serveurs distants.
J'ai lié les serveurs par clefs dsa avec passphrase.
j'ai bien lancé ssh-add pour la gestion des passphrases des clefs.
Si je fait une connexion en shell
# ssh root@mon.serveur.distant
pas de problème, je me connecte, le passphrase ne m'est pas demandé.
Si je saisi
# rsync -e "ssh -i /root/.ssh/id_dsa"
/chemin/du/fichier/a/envoyer/mon.fichier
root@mon.serveur.distant:/mon/chemin/distant/
en ligne de commande tout va bien, la synchro s'execute
si je met la commande dans un fichier nommé synchro,
# sh synchro
en ligne de commande tout se passe bien.
Par contre, si c'est une tache cron qui lance le script, plus rien ne
va. Le mode debug me permet de voir que la clef id_dsa est bien emise et
acceptée en shell:
debug1: Offering public key: /root/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we send a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-dss blen 433
debug2: input_userauth_pk_ok: .....
par cron voici le resultat:
debug1: Offering public key: /root/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we send a publickey packet, wait for reply
debug1: Authentications that continue: publickey,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-with-mic,password)
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
Je me prend la tête depuis 2 jours sans résultat. Hors de question de
passer par des clefs sans passphrase, j'ai trop d'attaque de scan et
autre sur le serveur.
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cumbalero
TG a écrit :
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
L'environnement d'exécution est différent.
Fait un env dans ta cron et un env dans un shell pour voir la différence, et de là, soit tu inclues un setting des variables dans t on script lancé en cron, soit tu sources le fichier d'environnement qui ne l'est pas en cron.
A+ JF
TG a écrit :
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
L'environnement d'exécution est différent.
Fait un env dans ta cron et un env dans un shell pour voir la
différence, et de là, soit tu inclues un setting des variables dans t on
script lancé en cron, soit tu sources le fichier d'environnement qui ne
l'est pas en cron.
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
L'environnement d'exécution est différent.
Fait un env dans ta cron et un env dans un shell pour voir la différence, et de là, soit tu inclues un setting des variables dans t on script lancé en cron, soit tu sources le fichier d'environnement qui ne l'est pas en cron.
A+ JF
TG
Cumbalero a écrit :
TG a écrit :
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
L'environnement d'exécution est différent.
Fait un env dans ta cron et un env dans un shell pour voir la différence, et de là, soit tu inclues un setting des variables dans ton script lancé en cron, soit tu sources le fichier d'environnement qui ne l'est pas en cron.
A+ JF
Bonjour et merci de cette réponse rapide. entre temps, j'ai testé en le lançant par un script php (base de mon developpement en fait) voici ce que me donnent env en shell, via exec(php) et par cron Je ne sais pas dire quelles sont les variables d'environnement qui sont réellement nécessaires, mes recherches sur google n'ont pas donné grand chose. A noté que je suis connecté à mon serveur local par session vnc, mais ceci ne devrait pas avoir d'incidence en principe. Je vais essayer de comprendre ce qui manque, mais tout aide sera bien venue, merci.
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
L'environnement d'exécution est différent.
Fait un env dans ta cron et un env dans un shell pour voir la
différence, et de là, soit tu inclues un setting des variables dans ton
script lancé en cron, soit tu sources le fichier d'environnement qui ne
l'est pas en cron.
A+
JF
Bonjour et merci de cette réponse rapide.
entre temps, j'ai testé en le lançant par un script php (base de mon
developpement en fait)
voici ce que me donnent env en shell, via exec(php) et par cron
Je ne sais pas dire quelles sont les variables d'environnement qui sont
réellement nécessaires, mes recherches sur google n'ont pas donné grand
chose.
A noté que je suis connecté à mon serveur local par session vnc, mais
ceci ne devrait pas avoir d'incidence en principe.
Je vais essayer de comprendre ce qui manque, mais tout aide sera bien
venue, merci.
Un idée pourquoi en shell l'instruction fonctionne et pas en cron?
L'environnement d'exécution est différent.
Fait un env dans ta cron et un env dans un shell pour voir la différence, et de là, soit tu inclues un setting des variables dans ton script lancé en cron, soit tu sources le fichier d'environnement qui ne l'est pas en cron.
A+ JF
Bonjour et merci de cette réponse rapide. entre temps, j'ai testé en le lançant par un script php (base de mon developpement en fait) voici ce que me donnent env en shell, via exec(php) et par cron Je ne sais pas dire quelles sont les variables d'environnement qui sont réellement nécessaires, mes recherches sur google n'ont pas donné grand chose. A noté que je suis connecté à mon serveur local par session vnc, mais ceci ne devrait pas avoir d'incidence en principe. Je vais essayer de comprendre ce qui manque, mais tout aide sera bien venue, merci.
ça vient d'ailleurs: si je fait un ssh-add -L dans le script, j'ai une reponse comme : Could not open a connection to your authentication agent.
Je pense que le pb vient de là en fait le passphrase ne pouvant pas être rentré car pas de console, ça coince c'est sur!! en console c'est bon, mais les shell sont differents
Je vais trouver....
TG a écrit :
après tri des lignes voici ce qui ressort comme différences:
ça vient d'ailleurs:
si je fait un ssh-add -L dans le script, j'ai une reponse comme :
Could not open a connection to your authentication agent.
Je pense que le pb vient de là en fait le passphrase ne pouvant pas être
rentré car pas de console, ça coince c'est sur!!
en console c'est bon, mais les shell sont differents
Je vais trouver....
TG a écrit :
après tri des lignes voici ce qui ressort comme différences:
ça vient d'ailleurs: si je fait un ssh-add -L dans le script, j'ai une reponse comme : Could not open a connection to your authentication agent.
Je pense que le pb vient de là en fait le passphrase ne pouvant pas être rentré car pas de console, ça coince c'est sur!! en console c'est bon, mais les shell sont differents
Je vais trouver....
TG a écrit :
après tri des lignes voici ce qui ressort comme différences:
par script php via la commande exec('env > sortie.txt');
SSH_AGENT_PID#387
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
et enfin par shell:
SSH_AGENT_PID#387
t
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
c'est clairement c'est deux là qui te pose probleme en cron ;-)
TG
J'ai identifié le pb: ssh-agent est lancé dans un shell depuis vnc alors que les cron sont au démarrage du système. comme ssh-agent est lié au shell qui le lnce, c'est normal que le ssh-agent ne connaisse pas le cron, et que cron n'accede pas a ssh-agent puisqu'ils sont lancés par des instances différentes!!!
y a plus qu'a faireen sorte que sh-agent soit démarré en premier par le système puis les services lancés. Dans cet ordre, tout ce qui sera lancé après demarrage devrait être vu par ssh-agent...
ouf! j'y arrive enfin
Philippe Weill a écrit :
TG a écrit :
par cron:
par script php via la commande exec('env > sortie.txt');
SSH_AGENT_PID#387
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
et enfin par shell:
SSH_AGENT_PID#387
t
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
c'est clairement c'est deux là qui te pose probleme en cron ;-)
J'ai identifié le pb:
ssh-agent est lancé dans un shell depuis vnc alors que les cron sont au
démarrage du système.
comme ssh-agent est lié au shell qui le lnce, c'est normal que le
ssh-agent ne connaisse pas le cron, et que cron n'accede pas a ssh-agent
puisqu'ils sont lancés par des instances différentes!!!
y a plus qu'a faireen sorte que sh-agent soit démarré en premier par le
système puis les services lancés. Dans cet ordre, tout ce qui sera lancé
après demarrage devrait être vu par ssh-agent...
ouf! j'y arrive enfin
Philippe Weill a écrit :
TG a écrit :
par cron:
par script php via la commande exec('env > sortie.txt');
SSH_AGENT_PID#387
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
et enfin par shell:
SSH_AGENT_PID#387
t
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
c'est clairement c'est deux là qui te pose probleme en cron ;-)
J'ai identifié le pb: ssh-agent est lancé dans un shell depuis vnc alors que les cron sont au démarrage du système. comme ssh-agent est lié au shell qui le lnce, c'est normal que le ssh-agent ne connaisse pas le cron, et que cron n'accede pas a ssh-agent puisqu'ils sont lancés par des instances différentes!!!
y a plus qu'a faireen sorte que sh-agent soit démarré en premier par le système puis les services lancés. Dans cet ordre, tout ce qui sera lancé après demarrage devrait être vu par ssh-agent...
ouf! j'y arrive enfin
Philippe Weill a écrit :
TG a écrit :
par cron:
par script php via la commande exec('env > sortie.txt');
SSH_AGENT_PID#387
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
et enfin par shell:
SSH_AGENT_PID#387
t
SSH_AUTH_SOCK=/tmp/ssh-ocfUe23329/agent.23329
c'est clairement c'est deux là qui te pose probleme en cron ;-)
TG
dans la serie aide toi et le ciel t'aidera... keychain est ton ami! a placer dans le bash_profile puis au debut des scripts je me suis inspiré de http://www.tux.org/~tbr/rsync/rsynchowto.html suffisait de trouver la doc adécouette de rsync et hop!
voilà fin du fil, merci
dans la serie aide toi et le ciel t'aidera...
keychain est ton ami!
a placer dans le bash_profile
puis au debut des scripts
je me suis inspiré de
http://www.tux.org/~tbr/rsync/rsynchowto.html
suffisait de trouver la doc adécouette de rsync et hop!
dans la serie aide toi et le ciel t'aidera... keychain est ton ami! a placer dans le bash_profile puis au debut des scripts je me suis inspiré de http://www.tux.org/~tbr/rsync/rsynchowto.html suffisait de trouver la doc adécouette de rsync et hop!