Einen SSH-Tunnel zum Übertragen von Dateien erstellen?

Einen SSH-Tunnel zum Übertragen von Dateien erstellen?

Für mich sind Netzwerke eine sehr „undurchsichtige“ Sache und selbst nachdem ich viele Tutorials zu SSH gelesen habe, verstehe ich nicht, wie ich einen einfachen Tunnel zum Übertragen meiner Dateien erstelle.

Die Konfiguration ist die folgende:

My Computer --[Internet]--> Bridge Machine --[Local Network]--> Final Machine

Zur Zeit mache ich folgendes:

1) Connect to the Bridge Machine with :
ssh -X [email protected]

2) Connect to the Final Machine with :
ssh -X username@finalmachine

3) I copy the address of files I need (for example .../mydirectory)

4) Then I deconnect from the finalmachine with :
exit

5) I copy the files to the bridge :
scp -r username@finalmachine:/.../mydirectory .

6) I deconnect from the bridge with :
exit

7) I copy the files to my machine :
scp -r [email protected]:/.../mydirectory .

Das ist ziemlich kompliziert. Meine Frage ist grundsätzlich: Wie kann man das mit einem SSH-Tunnel vereinfachen?

(und erklären Sie mir bitte die Bedeutung jeder Befehlszeile, die Sie schreiben, damit ich verstehe, was jede Zeile wirklich bewirkt, und damit ich sie nicht wie ein Zaubermittel verwende. Wenn außerdem bestimmte Portnummern verwendet werden, erklären Sie mir, ob ich eine völlig zufällige Nummer auswählen kann oder ob ich eine bestimmte Nummer auswählen muss.)

Antwort1

Richten Sie eine SSH-Konfigurationsdatei ein:

~/.ssh/config

Diese Datei hilft Ihnen in vielerlei Hinsicht, ermöglicht Ihnen aber letztendlich, alles in einem Schritt zu erledigen.

Richten Sie zunächst Aliase für jede Maschine ein

Host bridge
User username

Host final
User username

Jetzt können Sie „ssh -X bridge“ verwenden, um eine Verbindung mit der ersten Maschine herzustellen.

Für diesen nächsten Schritt müssen Sie Netcat auf jedem Rechner ausführen (versuchen Sie es mit „which nc“), um dies zu überprüfen. Verwenden Sie dann einen ProxyCommand mit der Konfiguration Ihres „endgültigen“ Rechners, sodass er lautet:

Host final
User username
ProxyCommand ssh -CAYq bridge exec nc %h %p

Dieser Befehl sendet alle gewünschten Daten über die zentrale Maschine an den Host %h auf Port %p (das heißt, wenn Sie Daten anderer Anwendungen über andere Ports senden möchten, können Sie dies tun, solange diese Verbindung offen ist).

Wenn Sie Schlüssel eingerichtet haben, werden Sie auch nicht zur Eingabe von Passwörtern aufgefordert. Andernfalls werden Sie zuerst nach dem Bridge-Schlüssel und dann nach dem letzten Schlüssel gefragt.

Jetzt sollte „ssh final“ funktionieren, ebenso wie:

scp -r final:/.../directory .

verwandte Informationen