SCP tra due reti


12

Devo trasferire un file tra due computer che non sono connessi alla stessa rete. Ho un terzo computer in grado di vedere entrambe le reti tramite una VPN.

Dal terzo computer, posso fare:

scp root@firstcomputer:./file ./

E termina il trasferimento con la seguente frase:

scp ./file root@secondcomputer:./

Ma non posso farlo in una sola riga, come segue:

scp root@firstcomputer:./file root@secondcomputer:./

La risposta all'errore è

ssh: connect to host secondcomputer port 22: No route to host
lost connection

Mi rendo conto che probabilmente è perché il primo computer non può vedere il secondo computer. È possibile fornire a SCP un parametro che si occupa del fatto che la macchina che esegue il programma SCP è l'unica in grado di vedere entrambi i computer?

A proposito, il terzo computer è un Mac con Lion e il pugno e il secondo eseguono Debian.

Risposte:


3

Dovresti essere in grado di utilizzare un tunnel SSH.

Supponendo che tu stia provando a trasferire un file da un computer remoto ("remoto") al tuo computer locale ("locale"), stabilisci il tunnel tramite il terzo computer ("gateway") digitando questo sul tuo computer locale:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Quindi puoi eseguire un numero illimitato di comandi SCP su questo tunnel (ancora digitando sul tuo computer locale):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

Ho appena provato questo sulla mia rete e ha funzionato perfettamente.

Il metodo precedente va bene se la rete remota è sicura, ma se non è sicura, è necessario stabilire un tunnel tra locale e gateway e un altro tunnel tra gateway e remoto, collegando i due con un numero di porta comune.


21

L'opzione scp -3 dovrebbe essere quello che stai cercando. Per dirlo nel tuo esempio:

scp -3 root@firstcomputer:./file root@secondcomputer:./

Nota che l'opzione -3 è stata introdotta per la prima volta in OpenSSH 5.7, che è stato rilasciato all'inizio del 2011.


Il mio scp non implementa -3 quando eseguo il comando ottengo scp: opzione illegale - 3 utilizzo: scp [-1246BCEpqrv] ...
JorgeO

1
È corretto. -3 è disponibile solo nell'ultima versione di OpenSSH, che non sono sicuro che Debian abbia ancora implementato.
Rilindo,

Ah, scusa per quello. Aggiornata la risposta relativa ai requisiti di versione.
Andol,

1

Puoi provare questo:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

Questo copierà il file nella directory / tmp sul terzo computer e, se ha esito positivo, ricopierà quel file sul computer secondario e quindi pulirà da solo. Dato che stai utilizzando l'operatore &&, ogni comando verrà eseguito solo se il comando precedente ha esito positivo.


Non sapevo dell'operatore &&. Meglio che usare;
JorgeO,

Questa è la stessa tecnica utilizzata dalla domanda originale nel primo esempio, che stava cercando di evitare (copia dal computer A al computer locale, quindi copia il file locale sul computer B).
Jason C,
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.