IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Clé ssh et tâche cron


Sujet :

Administration système

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Clé ssh et tâche cron
    Bonjour à tous

    Désolé si le sujet est rebattu, mais je n'ai rien trouvé pour le moment qui ,m'ait permis de régler le problème.

    J'ai des scripts cron qui font un rsync entre un serveur en prod et un serveur "miroir" pour chaque site qui est sur le serveur. Avant ça marchait très bien, mais j'ai dû (après un problème avec le serveur en prod) mettre en prod le miroir, erraser l'ancien prod et recommencer le système.
    C'est le serveur en prod qui fait son rsync sur le miroir. Sur le serveur en prod, j'ai une clé ssh dsa généré depuis le serveur en prod et sa clé publique sur le miroir.
    Enfin, le script fonctionne très bien quand je lance le rsync manuellement (pas en tache cron) et la connexion ssh fonctionne bien avec la clé, si ce n'est que je suis obligé à chaque cession de retapper la passphrase.

    Par contre, j'aimerais faire en sorte que "cron" mémorise la passphrase de la clé, parce que sans cela, ça ne fonctionne pas, et je n'ai pas trouvé de solution compréhensible ou satisfaisante pour le moment.
    J'ai essayé d'utiliser keychain mais sur mon ubuntu 12.04 je n'ai pas de fichier .bash_profile dans /root. J'ai essayé de créer le fichier et de mettre les différente choses que j'ai trouvé à ce sujet dedans, mais rien n'a fonctionné pour le moment.

    Avez-vous une solution pour cela, tout du moins des pistes.
    Merci d'avance pour votre aide.
    Denis

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par den66 Voir le message
    J'ai essayé d'utiliser keychain mais sur mon ubuntu 12.04 je n'ai pas de fichier .bash_profile dans /root.
    tu dois bien avoir un .bashrc ou un .profile qui traine dans le répertoire, ça doit faire l'affaire

    sinon tant qu'à avoir un agent qui tourne en permanence et retient ta passphrase, une autre solution peut consister à créer une clé ssh sans passphrase juste pour ce besoin précis, tu peux même éventuellement la limiter à 1 commande (rsync, ou mieux encore, un script maison qui lance rsync ?), la manip semble bien détaillée ici

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Bonjour BufferBob

    Et merci pour ta réponse.
    J'ai bien un .profile que j'ai essayé d'utiliser. J'ai surement mal fait les choses, je vais réessayer.
    Pour la passphrase vide, j'ai vu que certaines personnes trouvent que cela n'est pas terrible. Mais je vais étudier le lien que tu as mis (ce qui est toujours délicat pour mon niveau d'anglais ).
    En tout cas, merci de t'être penché sur mon problème.
    Denis

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Juste une question par rapport au tuto auquel tu fais référence.

    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command = "$ HOME / bin / rrsync -ro ~ / backups /», sans agent de renvoi, sans port-forwarding, no-pty, sans user-rc, no-X11-forwarding
    se place bien dans le fichier autorized_key avant la clé publique ?
    Merci d'avance pour ton aide.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Désolé... c'est bien avant la clé qu'il faut mettre la commande.
    Par contre le $HOME correspond bien à /root ou à /home ? J'imagine que cela dépend de la session, mais je préfère m'en assurer.

    Par contre, ce que je ne comprends pas c'est où se place la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ~$ rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -av user@remote: etc2/
    Mon script cron est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
    #set -e
    rsync -auv --delete-before --exclude 'tmp/' /var/www/dossier_du_site/ root@den01:/var/www/html/dossier_du_site/
    Il faut que je mettes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/sh
    #set -e
    rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -auv --delete-before --exclude 'tmp/' /var/www/dossier_du_site/ root@den01:/var/www/html/dossier_du_site/
    Et enfin, dernière question... est-ce que ça marchera aussi pour un script utilisant scp ? (transfert d'un dump de BDD).
    J'espère ne pas abuser avec toutes mes questions.

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par den66 Voir le message
    Par contre le $HOME correspond bien à /root ou à /home ? J'imagine que cela dépend de la session, mais je préfère m'en assurer.
    pour t'en assurer tu as la commande echo $HOME ou encore env | grep HOME.

    dans le doute qu'est-ce que ça te coute de mettre le chemin en dur ? si ta clé est stockée dans /opt/toto/coincoin ça servira à rien d'utiliser $HOME de toutes façons, le but c'est de comprendre le tutoriel et d'adapter...

    est-ce que ça marchera aussi pour un script utilisant scp ? (transfert d'un dump de BDD).
    il faudrait vérifier mais il me semble que non, la commande étant restreinte à rrsync sur la machine distante, celle-ci va bloquer scp à mon avis, mais il existe des alternatives comme rssh qui permet de spécifier dans un fichier de configuration qu'on souhaite autoriser à la fois rsync et scp/sftp par exemple (je te laisse investiguer ce point par toi-même c'est bon pour c'que t'as )

    mais là encore, quel est l'intérêt d'utiliser rsync pour (...) disons copier le site web, et scp pour copier la db ? à l'intuition je doute que la différence entre les deux soit prépondérante dans ton cas, pourquoi ne pas simplement utiliser rsync pour les deux ? ou bien scp pour les deux ? selon le cas la façon de restreindre la clé ssh sera un peu différente (à peine) mais la restreindre convenablement est une obligation

    d'autres liens qui décrivent la même procédure (basée sur rrsync), en français, trouvés sur ce truc formidable qu'est google


    ho hisse !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Oui, tes remarques sont pleines de bon sens.
    Pour le rsync, c'est que sur certains sites, je mets des images assez souvent (je suis peintre) et que je ne désire que recopier ce qui est nouveau et pas recopier toutes les images à chaque fois.
    Et pour la bdd, (j'imagine qu'il y a mieux mais j'ai fait ce que je pouvais) je fais un dump sur le serveur en prod, je copie le dump sur le serveur miroir et je lance un script (horaire décalé) qui réinjecte le dump sur le serveur miroir.

    Je comprends que tout cela soit du bricolage, mais quand on est pas de la partie et qu'on a pas les moyens de louer les services d'un pro, il faut se débrouiller... et c'est compliqué ! Il s'avère que louer deux petit serveur chez gandi reviens moins cher que trois serveurs mutualisés et comme j'avais quelques bride de notion, je me suis lancé. Et dans le fond, c'est plus intéressant d'essayer, même si c'est plus casse-gueule !

    Merci pour ton aide et tes conseils éclairés. J'attends demain pour voir si ça marche et passerais la discussion comme résolu avec joie si ça fonctionne.
    Et merci de ne pas avoir été trop sévère.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Bon, ça n'a pas marché !
    Sur le serveur cible dans mon autorized_key j'ai bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3Nz...Automated remote backup
    Et dans mon script cron :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -auv --delete-before --exclude 'tmp/' /var/www/ecritures-services/ root@den01:/var/www/html/ecritures-services/
    J'ai mis le script comme indiqué sur le serveur cible et comme ça ne fonctionnait pas sur le serveur initial
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > ~/bin/rrsync
    La clé porte le bon nom (j'ai suivi le tuto)
    Et j'ai le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
    	LANGUAGE = (unset),
    	LC_ALL = (unset),
    	LANG = "fr_FR.UTF-8"
        are supported and installed on your system.
    perl: warning: Falling back to the standard locale ("C").
    /root/bin/rrsync: Restricted directory does not exist!
    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
    rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
    Voilà. Avant d'abandonner... une dernière remarque , un dernier conseil ???
    Merci d'avance.

  9. #9
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par den66 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /root/bin/rrsync: Restricted directory does not exist!
    Voilà. Avant d'abandonner... une dernière remarque , un dernier conseil ??
    la ligne pertinente est celle qui indique que le répertoire restreint n'existe pas.

    une dernière remarque, un dernier conseil... en persévérant t'as peut-être une petite chance que ça finisse par fonctionner, là où abandonner c'est s'assurer à 100% que ça ne fonctionnera jamais
    après je peux comprendre que toucher ta bille sous Linux n'est peut-être pas ta prérogative principale, c'est à toi de voir...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Rebonjour à tous.

    Alors j'ai repris de zéro et j'ai trouvé ici une solution.
    J'ai ma clé avec passphrase et je suis connecté avec mon utilisateur (ici, root puisque c'est lui qui fait les tâches cron).

    J'ai fait :
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ssh-add /home/username/.ssh/id_rsa
    Enter passphrase for /home/username/.ssh/id_rsa: 
    Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)
    Puis j'ai lancé mon script cron avec la commande bash monscript et là il ne m'a pas demandé la passphrase !

    Reste à savoir si une fois que j'ai quitté la console, et que le script se fait automatiquement, ça marchera toujours. Je vous tiens au courant demain matin et espère pouvoir marquer comme résolu ce sujet !
    Un grand merci à BufferBob pour ses encouragements et son soutien.

    D'ailleurs, ce qui me semblait bizarre dans le message d'erreur c'est que le dossier existe bien au bon endroit !
    Et si, j'aimerais (pour moi) arriver à comprendre au moins suffisamment linux pour pouvoir gérer correctement mon serveur et les trois sites qu'il contient (le mien — peintre et infographiste, celui de mon épouse — écrivaine publique, et celui d'une asso dont je m'occupe). Il y a quelque chose d'assez fascinant dans la console et d'un certain point de vue, l'ordinateur avait perdu beaucoup de son charme depuis un certain temps, et la console lui en a redonné !
    Alors encore merci pour ta patience et ton soutien.
    À demain pour confirmation.

Discussions similaires

  1. tâche cron et lancement de script
    Par ddelec24 dans le forum 1&1
    Réponses: 3
    Dernier message: 22/04/2010, 12h02
  2. Comment spécifier une tâche cron ?
    Par Nibor dans le forum Administration système
    Réponses: 8
    Dernier message: 07/11/2007, 00h03
  3. Configuration d'une tâche Cron
    Par Rajhonson dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 21/12/2006, 17h00
  4. [SimpleXML] Problème SimpleXML et tâche CRON
    Par Bobtop dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/12/2006, 04h30
  5. recherche service gratuit de tâches cron
    Par php_de_travers dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 13/11/2005, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo