File Rsync tramite host intermedio


22

Al momento sono lontano dalla mia LAN e devo fare un backup del mio laptop. Ho una copia un po 'recente del mio laptop sul mio server e di solito eseguo il backup del laptop usando rsync. Ora desidero farlo, ma al di fuori della mia LAN.

In breve, voglio inviare dati da A a C tramite B, dove A è il mio laptop, B il mio router e C il mio server.

Ho trovato questo comando:, A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destinationche funziona benissimo per il trasferimento di file tramite scp - ma poiché ho già la maggior parte dei dati sul mio server, desidero utilizzare rsync per sincronizzare solo il delta.

Ho provato:, A$ rsync file -e 'ssh B ssh' Ce funziona fino a quando mi viene richiesto di fornire la password per l'utente: C. Tuttavia, quando inserisco la password non succede nulla. Il router esegue Tomato v1.28 e non riesco a configurarlo per utilizzare un file di configurazione ssh per consentirgli di accedere a C w / oa password.

Qualche idea su come farlo funzionare?


2
usa lo stesso ProxyCommandnel file di configurazione. Rsync dovrebbe raccoglierlo.
Jakuje,

Risposte:


30

Questa domanda ha essenzialmente una risposta altrove, incluso qui per scp e qui per rsync . Poiché quest'ultimo include la mia risposta, ma nessuna risposta è stata accettata, la ripeterò qui.

Come hai notato, puoi usare rsyncl' -e | --rshopzione, ma sarà un po 'più complicato:

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST -W %h:%p"' foo/ dest:./foo/

Oppure, se la tua versione di sshè abbastanza nuova (OpenSSH> = v7.3), puoi usare l' opzione -J( ProxyJump)

rsync -azv -e 'ssh -A -J USER@PROXYHOST:PORT' foo/ dest:./foo/

Nota che sto usando -A(inoltro agente) ma dovrebbe funzionare anche con l'autenticazione password se non usi le chiavi e, ovviamente, puoi sostituire proxycon Be destcon Cnel tuo esempio.

Se per caso non hai una sshversione abbastanza nuova (> = 5.3, IIRC), puoi usare netcatinvece -Wdell'opzione per ssh:

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST nc %h %p"' foo/ dest:./foo/

Infine, come già notato nei commenti, puoi inserirlo ProxyCommandnel tuo $HOME/.ssh/configfile in modo da non dover avere una riga di comando così complicata. In particolare, aggiungi qualcosa del genere:

Host C
  ProxyCommand ssh -A PROXYHOST -p 22 -W %h:%p

Oppure, usando ProxyJumpper OpenSSH> = v 7.3:

Host C
  ProxyJump PROXYHOST

Quindi dovresti essere in grado di fare solo:

rsync -azv foo/ C:./foo/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.