2013-05-20 25 views
28

voglio rsync a un nodo cluster che di solito connetto passa attraverso un altro sistema:rsync attraverso tunnel ssh

Say collega prima

ssh [email protected] 

e da lì a

ssh [email protected] 

Ora voglio rsync dalla mia workstation a clusternode. Faccio la seguente:

  • apro un tunnel ssh

    ssh -L8000:clusternode:8000 [email protected] 
    
  • ho rsync dalla mia postazione di lavoro a clusternode

    rsync -e "ssh -p8000" source [email protected]:destination 
    

e non funziona, ottengo

ssh_exchange_identification: Connection closed by remote host 

Perché non funziona? Cosa devo fare?


ho trovato un sacco di informazioni qui:

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

penso di capire che il mio problema è la seconda di autenticazione tra il ponte e la destinazione, così ho cambiato il metodo 2 che è anche non molto elegante, ma funziona. Mi piacerebbe provare il metodo 3, ma non so come configurare un demone rsync

+0

Provare a usare l'opzione -v (o -vvv) per il comando ssh: 'rsync -e" ssh -vvv -p8000 "utente di origine @ localhost: destination' per abilitare la registrazione ssh dettagliata, l'errore è almos t sempre lì dentro – Josh

+0

È possibile impostare un proxy da utilizzare per il nodo del cluster (vedere ad esempio https://rsync.samba.org/firewall.html, in particolare Metodo 2), quindi utilizzare rsync senza specificare esplicitamente un proxy. – jciloa

+0

Una soluzione migliore di quella fornita nelle risposte seguenti: https://puppet.com/blog/speed-up-ssh-by-reusing-connections – nus

risposta

25

Ecco cosa ha funzionato per me.

corro un comando in background per tunnel all'host remoto:

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

poi rsync localhost simili:

rsync -auve "ssh -p 2222" . [email protected]:/some/path 
2

Si dovrebbe collegarsi alla porta 22 di clusternode, quindi il tunnel dovrebbe essere simile

ssh -L localhost:8000:clusternode:22 [email protected] 
43

Prova questa one-liner:

rsync -av -e "ssh -A [email protected] ssh" ./src [email protected]:/dst 
+2

Quel liner è perfetto, dal momento che non voglio aprire un tunnel persistente . Grazie! – Marcus

+5

una soluzione di linea sarebbe bella, ma non funziona per me. Ottengo "Verifica chiave host fallita. rsync: connessione chiusa in modo imprevisto (0 byte ricevuti fino a quel momento) [mittente] errore rsync: errore non spiegato (codice 255) in /SourceCache/rsync/rsync-42/rsync/io.c(452) [sender = 2.6.9 ] " Penso che sia perché mi chiede solo la password per il bridge e non mi chiede mai la password per il target (entrambi hanno una password) – simona

+0

@simona, se hai configurato una chiave SSH invece di una password, sarebbe moot (il '-A' inoltra la connessione agente utilizzata per accedere alle chiavi SSH in memoria) –