GNU/Linux >> Linux Esercitazione >  >> Linux

Copia i dati attraverso il tunnel SSH su più hop

Soluzione 1:

Di gran lunga, il modo più semplice è semplicemente copiarlo tramite scp. Inoltre, questa sintassi funziona effettivamente a differenza di alcuni degli altri suggerimenti.

Non puoi battere questa sintassi per facilità. Ti consente di copiare in modo ricorsivo, rsync o qualsiasi altra cosa desideri senza il fastidio di considerare pipe potenzialmente complesse. Questa sintassi è intuitivamente chiara, sarà più prontamente supportata dai Sys Admins che ti seguono e non fa un uso inutile di cat.

scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to

Dalla pagina man di scp:-3 Le copie tra due host remoti vengono trasferite tramite l'host locale. Senza questa opzione i dati vengono copiati direttamente tra i due host remoti. Tieni presente che questa opzione disabilita la barra di avanzamento.

Nell'esempio qui sotto

  • La tua workstation si chiama MacBook-Pro.
  • Dev Jump Box si chiama devjumpserver
  • Dev Application Server si chiama devapplicationserver
    • Si trova sulla zona DNS LAN denominata .local
  • Il QA Jump Box si chiama qajumpserver
  • QA Application Server è denominato qaapplicationserver
    • È sulla zona LAN DNZ denominata .local
  • Effettueremo una copia di prova di un file /etc/hosts da 670 GB;-)
  • Si presume che tu abbia configurato l'autenticazione con chiave pubblica SSH.



Ecco un file ~/.ssh/config che imposta l'accesso diretto dalla tua workstation ai server delle applicazioni tramite il salto appropriato (aka bastion server).

MacBook-Pro:~ barrychapman$ cat ~/.ssh/config
Host *
  ServerAliveInterval 60
Host devapplicationsever
  HostName devapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa [email protected] -W %h:%p
  User barrychapman
Host qaapplicationserver
  HostName qaapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa [email protected] -W %h:%p
  User barrychapman

MacBook-Pro:~ barrychapman$



Testando la presenza del file sul server di destinazione, non ci sarà.

MacBook-Pro:~ barrychapman$ ssh qaapplicationserver ls /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
Killed by signal 1.
MacBook-Pro:~ barrychapman$



Ora copiamo un file dal server Dev Application all'applicazione QA tramite la tua workstation.

MacBook-Pro:~ barrychapman$ scp -3 devapplicationserver:/etc/hosts qaapplicationserver:/tmp/
Killed by signal 1.
Killed by signal 1.
MacBook-Pro:~ barrychapman$



Ora controlliamo la presenza del file copiato sul QA Application Server. Questa volta ci sarà.

MacBook-Pro:~ barrychapman$ ssh qaapplicationserver ls /tmp/hosts
/tmp/hosts
Killed by signal 1.
MacBook-Pro:~ barrychapman$ 

Nota

Quando chiudi una connessione ProxyCommand, vedrai il messaggio di avviso "Killed by signal 1". Questo è SSH che interrompe la connessione ProxyCommand e non c'è nulla di cui allarmarsi. Puoi sbarazzartene aggiungendo LogLevel Quiet alla tua stanza di configurazione del bastion host.

Soluzione 2:

TUBI!

Se Internet è una serie di tubi, Unix è una serie di tubi -- qualcosa del tipo:

cat ginormous-file | ssh [email protected] "cat | ssh [email protected] \"cat >out\" "

dovrebbe funzionare.

Se hai bisogno di attraversare più host, aggiungi più pipe (e più layer nidificati di \ -citazione sfuggita) se necessario. (Nota tuttavia che se la pipeline/fuga diventa così complessa che devi disegnare un diagramma o ricorrere al conteggio sulle dita per determinare quante volte devi raddoppiare le fughe è probabilmente il momento di ammettere la sconfitta e impostare una VPN adeguata !)


Linux
  1. Ssh - Traffico di tunnel attraverso un'altra macchina su Ssh?

  2. Impossibile eseguire applicazioni X tramite SSH in Linux

  3. Come posso incanalare tutto il mio traffico di rete attraverso SSH?

  4. Come posso copiare più file su scp in un comando?

  5. Copia file di grandi dimensioni su più macchine su una LAN

Riprendi i file parzialmente trasferiti su SSH utilizzando Rsync

Come utilizzare il comando rsync per copiare i dati localmente e su SSH

Come copiare in remoto file su SSH senza inserire una password

come eseguire il tunneling di Windows Remote Desktop tramite ssh utilizzando una macchina Linux?

Inoltra SSH attraverso il tunnel SSH

Connessione SSH tramite un tunnel SSH inverso (remoto).