SCP mit zwei verschiedenen Ports

15

Wie kann ich mit dem Befehl scp Dateien zwischen zwei Remote-Servern von meinem lokalen PC kopieren?

Remote-Server 1: IP = 67.12.21.133 & Port = 6774

Remote-Server 2: IP = 67.129.242.40 & Port = 6774

scp -rp -P 6774 [email protected]: /home/denny/testapp1.txt [email protected]:

Es gibt einen Fehler, nachdem das Passwort 67.12.21.133 eingegeben wurde.

ssh: Verbindung zum Host herstellen 67.129.242.40 Port 22: Verbindung abgelehnt

verlorene Verbindung

linuxspider
quelle
Ich habe das gerade auch getestet, aber es funktioniert nur für den ersten Host. Die zweite ist für Port 22 gesperrt.
gajdipajti

Antworten:

19

Mit können Sie ~/.ssh/configdie Ports angeben, die für die Hosts verwendet werden sollen (und um viele andere nützliche Dinge einzustellen; lesen Sie die Manpage man ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

Dabei müssen Sie die Option -3scp verwenden, mit der die Dateien über Ihren lokalen Computer kopiert werden. Andernfalls gibt scp den Befehl scp über ssh auf dem ersten Host aus, sodass er tatsächlich ausgeführt wird

 ssh -p 6774 [email protected] scp -rp /home/denny/testapp1.txt [email protected]:

und dann wird das ~ / .ssh / config des ersten entfernten Hosts (67.12.21.133) anstelle Ihres lokalen verwendet.

Wenn Sie Ihr ~/.ssh/configrichtig eingerichtet haben, sollte dies funktionieren:

scp -rp3 [email protected]:/home/denny/testapp1.txt [email protected]:

Natürlich können Sie auch den Inhalt der ~ / .ssh / config-Datei auf Ihren ersten Remote-Host kopieren und dann scp ohne die -3Option verwenden, wodurch die Übertragung wahrscheinlich beschleunigt wird.

Oder Sie können den Trick von scp verwenden und eine solche Befehlszeile verwenden:

ssh -p 6774 [email protected] scp -rp -P 6774 /home/denny/testapp1.txt [email protected]:

(Beachten Sie den unterschiedlichen Fall des Port-Parameters für ssh und scp: ssh -p 6774vs. scp -P 6774)

PS: Ich habe diese Informationen von der OpenSSH-Bugzilla erhalten, in die ich diese Informationen als Bug eingegeben habe: https://bugzilla.mindrot.org/show_bug.cgi?id=2020

Daniel Kullmann
quelle
'-3' scheint keine gültige Option zu sein - ich erhalte nur "scp: illegal option - 3".
Rich Sedman
8

Ich habe keine einfache Lösung gefunden, aber Sie könnten versuchen, sshfs folgendermaßen zu verwenden:

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

Ein anderer Weg könnte sein, ssh zu benutzen (tatsächlich nicht erfolgreich getestet):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

Momentan habe ich nicht den richtigen Weg gefunden, um die beiden Passwörter einzugeben. Es fragt einige Male nach den beiden Passwörtern, akzeptiert aber niemanden. Vielleicht funktioniert es, wenn Sie die SSH-Schlüssel zwischen den Hosts austauschen. Weil du die Passwörter dann nicht brauchst.

Ich hoffe das hilft? Thomas

tpf
quelle
6

Laut dieser Seite im Linux Academy-Blog müssen Sie die -P 6774Option auch direkt vor dem zweiten Remote-Pfad verwenden:

scp -rp -P 6774 [email protected]:/home/denny/testapp1.txt -P 6774 [email protected]:

Jede Verwendung des -PFlags gilt nur für die nächste Position in der Befehlszeile, nicht für den gesamten Befehl. Jeder Speicherort, zwischen dem sich kein -Pund der vorherige Pfad (oder der Befehlsname [ scp]) befindet, ist standardmäßig der Standardport (22).

Dan Hunsaker
quelle
Das funktioniert bei mir nicht. Schade, denn das scheint die beste Lösung zu sein. Die Verbindung ist unterbrochen.
david.perez
1
Ich habe gerade den Link aktualisiert (obwohl ich vergessen habe, mich zuerst anzumelden ...). Die Linux Academy hat beschlossen, ihre Site neu zu strukturieren. Hoffe das hilft, manche!
Dan Hunsaker
Wenn das nur klappen würde. Aber ich verstehe -P: No such file or directory.
Tom
@Tom - Auf welchem ​​System läuft das? Möglicherweise haben Sie eine andere Implementierung scpals die hier angegebene.
Dan Hunsaker
Dies ist Ubuntu 17.04.
Tom
-2

Wenn Sie Daten von einem Server auf einen anderen übertragen müssen, verwenden Sie den SCP-Befehl. Um das zu tun

Drücken Sie einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen den folgenden Befehl aus.

scp -pr [email protected]:/path/to/files /destination/path

Hinweis: Der Parameter -P kann verwendet werden, wenn Sie die Portnummer angeben möchten.

Mitch
quelle
2
Du hast die Frage nicht gelesen. Er hat ein Problem mit den Ports. Sie können den ersten Port festlegen, den zweiten jedoch mit dem Parameter -P
gajdipajti
@gajdipajti Ich habe in meiner Antwort keinen Port angegeben und ihn als Notiz hinzugefügt. Der Benutzer hat außerdem angegeben, dass er denselben Port verwendet. Schauen Sie sich die Zeilen Q. 2nd & 3rd an :)
Mitch
2
Aber es funktioniert nicht so, Sie setzen das erste mit -P, aber das zweite bleibt 22. Probieren Sie es einfach aus. Ich mache gerade die Tests, aber es gibt noch keine funktionierenden Lösungen.
Gajdipajti
Sie würden die Option -P nur verwenden, wenn Sie einen nicht standardmäßigen Port verwenden.
Mitch