web-dev-qa-db-fra.com

rsync via ssh tunnel

Je veux rsync à un nœud de cluster auquel je me connecte généralement en passant par un autre système:

Dis que je me connecte d'abord à

  ssh user@bridge 

et de là à

  ssh user@clusternode

Maintenant, je veux rsync de mon poste de travail au clusternode. Je fais ce qui suit:

  • J'ouvre un tunnel ssh

    ssh -L8000:clusternode:8000 user@bridge
    
  • Je rsync de mon poste de travail au clusternode

    rsync -e "ssh -p8000" source user@localhost:destination
    

et ça ne marche pas, je reçois

 ssh_exchange_identification: Connection closed by remote Host

Pourquoi ça ne marche pas? Qu'est-ce que je dois faire?


J'ai trouvé beaucoup d'informations ici:

http://toddharris.net/blog/2005/10/23/rsyncing-through-an-ssh-tunnel/

Je pense que pour comprendre que mon problème est la deuxième authentification entre le pont et la destination, j'ai donc changé pour la méthode 2 qui n'est pas non plus très élégante, mais ça marche. Je voudrais essayer la méthode 3, mais je ne sais pas comment configurer un démon rsync

38
simona

Voici ce qui a fonctionné pour moi.

J'exécute une commande en arrière-plan pour créer un tunnel vers l'hôte distant:

 ssh -N -L 2222:remote.example.com:22 bridge.example.com&

puis je rsync vers localhost comme ceci:

rsync -auve "ssh -p 2222" . me@localhost:/some/path
30
Steven Pemberton

Essayez ce one-liner:

rsync -av -e "ssh -A root@proxy ssh" ./src root@target:/dst
61
skroll

Vous devez vous connecter au port 22 de clusternode, de sorte que le tunnel devrait ressembler à

ssh -L localhost:8000:clusternode:22 user@bridge
2
radim