scp-Dateien von einem Host über einen anderen Host

0

Ich bin auf Maschine A und kann über ssh auf Maschine B und über ssh von Maschine B nach C zugreifen. Aber ich kann nicht direkt von A auf Maschine C zugreifen.

Das Problem ist, dass ich einen Ordner mit einer Größe von 5 GB von C auf meinen lokalen Computer A übertragen muss. Ich kann dies tun, indem ich sie zuerst auf B und dann von B auf A übertrage. Aber B hat begrenzten Speicherplatz. Ich habe ein Benutzerkonto auf B und C, kein Root-Konto. Aber ich kann meine Sachen mit den Benutzerkonten machen.

Sagen Sie mir jetzt bitte, wie ich diesen Ordner von C nach A bekommen kann. Ich habe von SSH-Tunneln hier gehört, aber es ist mir nicht klar. Was soll ich machen?

P basak
quelle

Antworten:

3

Wenn Sie eine neuere Version von scp haben, können Sie scp mit -3Argument auf Host B ausführen .

scp -3 user@hostC:/path/to/file user@hostA:/path/to/file

Es leitet den Datenverkehr über hostB weiter. (Siehe http://www.openbsd.org/cgi-bin/man.cgi?query=scp. )

Ich nehme an, es werden auch die Anmeldeinformationen für beide Server separat abgerufen. Aber ich habe im Moment nur eine ältere Version und kann nicht testen, um sicherzugehen.

Kent
quelle
Hallo, das Problem ist, dass Host C eine lokale Maschine ist.
P basak
Wenn Sie von HostB aus über SSH auf HostC zugreifen können, wie Sie in der Frage gesagt haben, sollte es keine Rolle spielen, ob sich HostC im lokalen Subnetz oder an einem anderen Ort befindet. Können Sie erklären, warum das ein Problem ist?
Kent
Ich denke, ich war nicht klar in der Frage, und ich habe auch einen Fehler gemacht, Host A ist lokal, nicht Host C. Eigentlich kann ich von A auf B zugreifen, aber nicht von B nach A.
P basak
Auf hostA können Sie auf hostB einen Tunnel einrichten, mit dem Sie von host B: (auf hostA:) eine Verbindung zu hostA herstellen können ssh -R 4567:localhost:22 user@hostB. Dann würde der Befehl scp scp -3 user@hostC:/path/to/file -P 4567 user@localhost:/path/to/fileungefähr so aussehen (ausgeführt von hostB, wobei "localhost: 4567" zurück zu hostA springt).
Kent