Forum Linux.général rsync via un tunnel ssh sur une tierce machine

Posté par  .
Étiquettes :
0
11
août
2011

Salut à tous les amateurs de faux Rhum (et aux buveurs de vrai aussi ;) )

Je veux faire du rsync entre deux PC, jusque là tout va bien, sauf qu'ils ne sont pas sur le même réseau ne sont pas sur le même réseaux,
Donc il faut que je passe par une machine tierce

-------     Réseau 1    --------     internet     --------  
| PC 1 |   <----------> |PC 2  |   <----------->  | PC 3  |
--------                --------                  ---------

Au départ, j'ai tenté
rsync -e ssh -avz PC1:/dossier PC2:Dossier
Bien sur ca ne marche pas,

Donc c'est quoi l'astuce pour arriver a monter un tunnel ssh sur PC2 qui me permet de faire passer des données par rsync, car mes essais sont jusque là infructueux...

Merci à vous

  • # avant tout le tunnel ssh est il ok réellement

    Posté par  . Évalué à 3.

    Avant tout il serai bon de savoir si le tunnel ssh est établi correctement.

    ssh passe t'il jusqu'au pc3 ?

    as tu défini le bon niveau ssh pour rsync (ssh1 / ssh2) ?
    as tu distribué dans les machines les clefs ssh (et sur les bonnes machines) ?

    Et enfin quel est le message d'erreur réel envoyé par rsync puisque je suppose qu'il y en a un étant donné que tu dis "ça marche pas"

    avec toutes ces informations il deviendra possible de te répondre.

    • [^] # Re: avant tout le tunnel ssh est il ok réellement

      Posté par  . Évalué à 1.

      ALors,
      oui les clé ssh sont setté entre PC2 et PC3, entre PC2 et PC1 mais je doit encore les mettre entre PC1 et PC2 (mais ça devrait marcher avec un mot de passe non ? )
      Je sette le tunnel ainsi

        user@PC2$ ssh    -L 2080:PC3:873 user@PC3
      

      Ce qui m'ouvre un shell sur PC 3, j'ai aussi testé avec -R mais pas vu de différence notoire

      Ensuite sur PC1:

        user@PC1$     rsync --rsh='ssh -p2080' -avz /path/to/data user@PC2:/path/to/dat/on/PC3
         ssh: connect to host PC1 port 2080: Connection refused
      

      Dans le doute j'ai tenté une variante :

         rsync --rsh='ssh -t user@PC2 ssh -t user@PC3' -avz   /path/to/data daq@PC3:/path/to/data/on/PC3
         Pseudo-terminal will not be allocated because stdin is not a terminal.
         user@PC2's password: 
         Pseudo-terminal will not be allocated because stdin is not a terminal.
         bash: PC3: command not found
      

      Voilà le statut exact de mes messages d'erreurs

  • # Tunnel SSH qui te donne l'accès SSH de PC1

    Posté par  (site web personnel) . Évalué à 2.

    Ta question n'est pas précise, mais par exemple, pour copier depuis PC3 vers PC1 :

    user@PC3$ ssh -L10000:PC1:22 PC2
    user@PC3$ rsync -e'ssh -p10000' -avz --progress /dossier localhost:/dossier
    

    A adapter à tes besoins...

    • [^] # Re: Tunnel SSH qui te donne l'accès SSH de PC1

      Posté par  . Évalué à 1.

      Un truc super pratique serait de pouvoir lancer le tunnel depuis le rsync. J'ai rapidement cherché sans rien trouver, quelqu'un saurait?

    • [^] # Re: Tunnel SSH qui te donne l'accès SSH de PC1

      Posté par  . Évalué à 0.

      Merci,
      Je mettais le tunnel sur PC2 alors qu'il devait être lancé sur PC1,

      Une question, pour lancer le rsync à heure fixe (avec cron) il faut créer le tunnel avant , Y a t'il moyen de lancer le tunnel de façon permanente ?

      À défaut c'est quoi l'astuce pour scripter
      -Ouverture du tunnel
      -Rsync
      -destruction du tunnel

      Sachant que les fichier à syncer sont gros, et la bande passante très petite...

    • [^] # Plus simple : double SSH

      Posté par  (site web personnel) . Évalué à 3.

      Voilà:

      user@PC3$ rsync -e "ssh user@PC2 ssh -l user" -avz --progress /dossier localhost:/dossier
      

      C'est plus simple.

  • # moyen de lancer le tunnel de façon permanente

    Posté par  . Évalué à 1.

    Une question, pour lancer le rsync à heure fixe (avec cron) il faut créer le tunnel avant , Y a t'il moyen de lancer le tunnel de façon permanente ?

    oui, ca s'appelle autossh
    ca permet de monter le tunnel des que le reseau est up.

    helas, cela represente une eventuelle faille de securité puisque le tunnel est ouvert en permanence

    • [^] # Re: moyen de lancer le tunnel de façon permanente

      Posté par  . Évalué à 1.

      ça ne devrait même pas exister, car ça revient à avoir SSH ouvert à tout les vents et à plein temps, autant ne pas avoir de tunnel du tout dans ce cas là. :) j'exagère mais pas tant que ça.

      • [^] # Re: moyen de lancer le tunnel de façon permanente

        Posté par  . Évalué à 2.

        Ouais enfin c'est comme un proxy quoi… Autant enlever tous les services qui tournent sur ta machine alors, sous prétexte qu'ils écoutent en permanence !

        Et non, ce n'est pas « ouvert à tous les vents ». À moins que tu rajoutes l'option -g, ssh n'écoute que sur localhost. Pour l'auteur de la question, il devra le rajouter, donc il faut un firewall.

  • # man .ssh/config

    Posté par  . Évalué à 1.

    Je n'ai pas bien compris si tu lançais le rsync depuis PC2 ou depuis PC3, voici la solution depuis PC3, pour l'inverse il suffit d'inverser les noms:

    A mettre dans le .ssh/config de PC3:

    Host PC1
            ProxyCommand nohup ssh PC2 nc -w1 %h %p
    

    Ensuite tu pourras faire un ssh user@PC1 directement depuis PC3; il n'y a pas de raison que ça pose des problèmes pour rsync.

    • [^] # Re: man .ssh/config

      Posté par  . Évalué à 2.

      Proxycommand + nc est génial,je recommande cette solution !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.