Ich habe eine große Datei auf dem Server one
und ich möchte es Server kopieren two
verwenden scp
. Ich habe die Schlüssel richtig eingerichtet und kann von meinem Desktop aus ssh / scp auf beide Server übertragen.
Die zu kopierende Datei ist größer als der freie Speicherplatz auf der Festplatte meiner Workstation. Deshalb wollte ich Folgendes tun:
scp one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz
aber ich habe:
ssh: Could not resolve hostname one: Name or service not known
Wir haben hier kein DNS (fragen Sie mich nicht warum), also habe ich dies in meiner ~ / .ssh / config:
Host one
Hostname <IP address of server one>
User jspurny
Host two
Hostname <IP address of server two>
User jspurny
Wenn ich es mit einer kleineren Datei versuche und sie von one
meiner Workstation auf die Workstation übertrage two
, funktioniert es einwandfrei:
scp one:/opt/smallerfile.tar.gz .
scp smallerfile.tar.gz two:/opt/
Bei der Verwendung von IP-Adressen direkt, wie im Kommentar vorgeschlagen, habe ich Folgendes erhalten:
$ scp jspurny@<one's IP>:bigfile.tar.gz jspurny@<two's ip>:bigfile.tar.gz
Host key verification failed.
lost connection
Kein Problem:
Die Größe ist hier kein Problem - es war nur ein "Auslöser" für dieses Problem, da es keine Möglichkeit gab, bigfile.tar.gz
auf meiner Workstation zu speichern . Das Problem tritt unabhängig von der Dateigröße auf.
Frage:
Warum macht der Befehl:
scp oneremote:file secondremote:file
wirft ein Fehler, egal ob mit .ssh/config
Aliasen oder direkt mit IP-Adressen?
Gelöst - irgendwie - immer noch auf der Suche nach Erklärungen - habe ich die große Datei in kleinere Dateien aufgeteilt und sie einzeln über meine Workstation übertragen. Ich frage mich immer noch, warum es nicht funktioniert hat. Deshalb würde ich mich immer noch über eine Erklärung freuen, was falsch war.
Fand einen Grund, warum es fehlschlägt: Es scheint, ich war dumm. Ich dachte, dass der Befehl
scp one:file two:file
stellte zwei Verbindungen zu jedem Server her und empfing dann Daten von einem und sendete sie sofort an zwei und wirkte so wie ein Relais.
Dies ist eindeutig nicht der Fall, da eine einfache -v
Option offenbarte, dass sie tatsächlich nur eine Verbindung zu einer herstellt und von einer versucht, eine Verbindung zu zwei herzustellen . Was natürlich nicht möglich ist, weil Server eins keine Verbindung zu zwei herstellen soll .