Ich habe zwei Remote-Hosts.
host1-> 10.3.0.1
host2-> 10.3.0.2
Beide führen einen SSH-Server aus.
Der SSH-Server überwacht Port 22 in Host1 und Port 6969 in Host2. Jetzt muss ich auf meinem lokalen Computer etwas von host1 auf host2 kopieren, ohne mich über ssh bei host1 oder host2 anzumelden. So etwas wie,
scp [email protected]:/path/to/file [email protected]/path/to/file
Wie kann ich das tun, beachten Sie bitte, dass die beiden Hosts unterschiedliche Ports für ssh verwenden.
-P
Flag vorhanden ist, um den zu verwendenden Port anzugeben, hat ssh im Fall einer Übertragung von Remote zu Remote kein definiertes Verhalten hinsichtlich der Angabe des Ports pro Host ...Antworten:
In der Vergangenheit war die Art und Weise, in der das Kopieren von Dateien zwischen Remote-Systemen
scp
( naiv ) aufgerufen wurde, sehr unpraktisch: wenn Sie beispielsweise geschrieben habenscp
würde zuerst einessh
Sitzung auf remote1 eröffnen und dannscp
von dort auf remote2 laufen. Damit dies funktioniert, müssen Sie die Berechtigungsnachweise für remote2 auf remote1 einrichten.Die moderne Art, dies zu tun ("modern", weil es erst vor ein paar Jahren implementiert wurde und vielleicht nicht jeder ein
-3
-fähiges System hatscp
), erfordert zwei Schritte. Der erste notwendige Schritt besteht darin~/.ssh/config
, alle Optionen für die Verbindung zu remote1 und remote2 wie folgt einzurichten:Auf diese Weise ist es möglich, alle erforderlichen Optionen ohne Mehrdeutigkeiten an den Befehl zu übergeben : Wenn wir beispielsweise für die Befehlszeilenschnittstelle den Port 2222 ohne die obige Konfiguration verwendet hätten, wäre unklar gewesen, ob wir auf remote1 oder remote2 und verweisen ebenfalls für die datei mit den kryptografischen schlüsseln. Auf diese Weise bleibt die CLI übersichtlich und einfach.
Zweitens verwenden Sie die
-3
Option wie folgt:Die
-3
Option weistscp
an, den Datenverkehr über den PC zu leiten, auf dem der Befehl ausgegeben wird, auch wenn er ein Dritter für die Übertragung ist. Auf diese Weise müssen sich die Berechtigungsnachweise nur auf dem ausstellenden PC, dem Drittanbieter, befinden.quelle
~/.ssh/config
Datei unterstützt wird: cloud.google.com/compute/docs/gcloud-compute, aber ich glaube nicht, dass AWS die gleiche Unterstützung hat-v
.Als ich das letzte Mal versuchte, war scp nicht in der Lage, das zu tun. Ihre Befehlszeile sieht in Ordnung aus. Diese Problemumgehung funktioniert:
quelle
In meinem Fall habe ich eine Remote-zu-Remote-Kopie ohne das
-3
Argument durchgeführt. Der mit dem Parameter '-P' angegebene Port funktioniert mit dem ersten Server, aber Port 22 wird mit dem zweiten Server verwendet.Die Lösung besteht darin, die
/etc/ssh/ssh_config
Datei zu bearbeitenserver1
und folgende Zeilen hinzuzufügen:Auf diese Weise wird der Port 1234 für beide verwendet. Es könnte auch anders sein.
Diese Lösung bietet einen besseren Durchsatz als frühere Lösungen, da die Kommunikation direkt erfolgt.
quelle
Die Quelle und das Ziel können als URI in der Form scp: // [user @] host [: port] [/ path] angegeben werden.
so kannst du laufen:
quelle