GNU/Linux >> Linux Esercitazione >  >> Linux

Rsync file tramite host intermedio

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

Come hai notato, puoi usare rsync è -e | --rsh opzione, 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 nuovo (OpenSSH>=v7.3), puoi usare -J (ProxyJump ) opzione

rsync -azv -e 'ssh -A -J [email protected]:PORT' foo/ dest:./foo/

Nota che sto usando -A (inoltro agente) ma dovrebbe funzionare anche con l'autenticazione della password se non si utilizzano le chiavi e, ovviamente, è possibile sostituire proxy con B e dest con C nel tuo esempio.

Se per caso non hai un ssh abbastanza nuovo version (>=5.3, IIRC), puoi usare netcat invece di -W opzione a ssh :

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

Infine, come già notato nei commenti, puoi inserire ProxyCommand nel tuo $HOME/.ssh/config file in modo da non dover disporre di una riga di comando così complicata. Nello specifico, aggiungi qualcosa del genere:

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

Oppure, usando ProxyJump per OpenSSH>=v 7.3:

Host C
  ProxyJump PROXYHOST

Quindi dovresti essere in grado di fare solo:

rsync -azv foo/ C:./foo/

Linux
  1. Eseguire il backup dei file con rsync

  2. Utilizzo di rsync per sincronizzare i file

  3. rsync N file più recenti in una directory

  4. Linux unisci cartelle:rsync?

  5. Limita rsync su ssh sola lettura/solo copia da host remoto

Come trasferire file con Rsync su SSH

Come trasferire file con Rsync su SSH

Esempi di Rsync per trasferire file in Linux

Riprendi i file parzialmente trasferiti su SSH utilizzando Rsync

Come eseguire l'SSH sul server tramite Linux

Utilizzare un dispositivo su SSH?