Ich bin ein zufriedener Benutzer von rsync -e ssh
und verwende es, um Daten zwischen meinem Computer und einem Remote-Host zu synchronisieren.
rsync -avz -e ssh me@hostA:~/folder ~/folder
Und das hat bisher getan, was ich brauchte.
Ich arbeite jetzt mit einer Konfiguration, bei der der Zugriff etwas komplizierter ist. Angenommen, jetzt ~/folder
ist eingeschaltet hostB
, aber hostB
von meiner Maschine aus nicht direkt erreichbar, sondern nur indirekt über hostA
.
Wenn ich also nur den Ordner auf sehen möchte hostB
, muss ich zuerst eine SSH-Verbindung zu herstellen hostA
, dann zu. hostB
Danach kann ich meine Dateien in ~/folder
auf dem Remote-Host sehen.
Meine Frage ist nun: Welche (beste) Methode kann ich rsync
direkt zwischen meinem Computer und verwenden hostB
?
Leider ist dies die Konfiguration, mit der ich arbeiten muss. Ich gehe davon aus, dass es keine Möglichkeit gibt, die Daten vorübergehend auf hostA
sich selbst zu speichern.
Antwort1
Schauen Sie sich anWie verbinde ich mich über SSH mit einem anderen PC
Du erstellst einen neuen ~/.ssh/config
Eintrag mit dem Namen tunnelb:
Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p
Wenn Sie eine aktuelle Version von ssh haben, können Sie Proxycommand ssh user@hostA -W %h:%p
stattdessen verwenden. Dies ist vorzuziehen, da es nicht aufnc
Jetzt können Sie einfach verwenden, rsync -e ssh tunnelb:~/folder ~/folder
da der definierte Eintrag in verwendet wird ~/.ssh/config
.
Antwort2
Variante 1:
Starten Sie zunächst ssh auf HostA dauerhaft mit lokaler Portweiterleitung in einem anderen Terminal. Beispiel:
ssh -N -v -L 22022:hostB:22 hostA
Dann „füttere“ rsync mit ssh an localhost:22022
. Eine Variante besteht darin, in ~/.ssh/config zu schreiben:
Host hostB
HostName localhost
Port 22022
Variante 2:
Ersetzen Sie es -e ssh
durch -e
ein Skript, das Folgendes enthält:
ssh hostA 'ssh hostB' "$@"
Ich habe es nicht ausprobiert, daher müssen einige Details noch näher erläutert werden.