SCP zwischen zwei Netzwerken

SCP zwischen zwei Netzwerken

Ich muss eine Datei zwischen zwei Computern übertragen, die nicht mit demselben Netzwerk verbunden sind. Ich habe einen dritten Computer, der beide Netzwerke über ein VPN sehen kann.

Vom dritten Computer aus kann ich Folgendes tun:

scp root@firstcomputer:./file ./

Und beenden Sie die Überweisung mit folgendem Satz:

scp ./file root@secondcomputer:./

Ich kann das aber nicht in nur einer Zeile machen, und zwar wie folgt:

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

Die Fehlerantwort ist

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

Mir ist klar, dass das wahrscheinlich daran liegt, dass der erste Computer den zweiten Computer nicht sehen kann. Ist es möglich, SCP einen Parameter zuzuweisen, der die Tatsache berücksichtigt, dass die Maschine, auf der das SCP-Programm läuft, die einzige ist, die beide Computer sehen kann?

Der dritte Computer ist übrigens ein Mac mit Lion und auf dem ersten und zweiten läuft Debian.

Antwort1

Sie sollten einen SSH-Tunnel verwenden können.

Angenommen, Sie versuchen, eine Datei von einem Remotecomputer („Remote“) auf Ihren lokalen Computer („Local“) zu übertragen, richten Sie den Tunnel über den dritten Computer („Gateway“) ein, indem Sie Folgendes auf Ihrem lokalen Computer eingeben:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Anschließend können Sie eine unbegrenzte Anzahl von SCP-Befehlen über diesen Tunnel ausführen (immer noch auf Ihrem lokalen Computer eingeben):

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

Ich habe dies gerade in meinem Netzwerk getestet und es hat perfekt funktioniert.

Die obige Methode ist in Ordnung, wenn das Remote-Netzwerk sicher ist. Wenn es jedoch nicht sicher ist, müssen Sie einen Tunnel zwischen dem lokalen Netzwerk und dem Gateway sowie einen weiteren Tunnel zwischen dem Gateway und der Remote-Verbindung einrichten und die beiden über eine gemeinsame Portnummer verbinden.

Antwort2

Die scp-Option -3 sollte das sein, wonach Sie suchen. Um es in Ihr Beispiel einzubauen:

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

Beachten Sie, dass die Option -3 erstmals in OpenSSH 5.7 eingeführt wurde, das Anfang 2011 veröffentlicht wurde.

Antwort3

Sie können Folgendes versuchen:

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

Dadurch wird die Datei in das Verzeichnis /tmp auf dem dritten Computer kopiert. Wenn dies erfolgreich ist, wird die Datei erneut auf den zweiten Computer kopiert und anschließend selbst bereinigt. Da Sie den Operator && verwenden, wird jeder Befehl nur ausgeführt, wenn der vorherige Befehl erfolgreich ist.

verwandte Informationen