Ich habe ein paar Schritte von einem Computer entfernt und muss die Portweiterleitung einrichten, um Dateien übertragen zu können.
Bearbeiten: Um klar zu sein, werden mehrere Hops benötigt, um auf den Remote-Computer zuzugreifen. Von meinem Computer aus habe ich ein VPN eingerichtet, auf das ich auf 10.255.xx zugreifen kann - dies ist der einzige Computer, mit dem ich über das VPN eine Verbindung herstellen kann. Sobald ich bei .xx angemeldet bin, kann ich eine Verbindung zu anderen Computern herstellen - .yy ist einer davon.
Von meiner Maschine:
ssh -L 4567:localhost:4567 [email protected]
Dann von dieser Maschine:
ssh -L 4567:localhost:22 [email protected]
Ich kann dann
scp -P 4567 me@localhost:/path/to/large/file.gz .
Ich habe diese Übernachtung laufen lassen, nur um festzustellen, dass die Übertragung irgendwann gestorben ist.
Ich habe einige Vorschläge zur Verwendung von rsync über ssh gesehen, um die Übertragung fortzusetzen, aber ich bin mir nicht sicher, wie ich das einrichten soll. Ist das möglich?
quelle
scp [email protected]:/path/to/large/file.gz .
genau das Gleiche erreichen? Welche Version von scp (ssh) ist auf Client und Server installiert?Antworten:
Bei einigen Versionen von scp (die Version auf dem Quellcomputer scheint der Schlüssel zu sein) reicht es aus, den Befehl scp erneut auszuführen, um die Übertragung fortzusetzen. Aber sei vorsichtig! Wenn Ihre Version keine Teilübertragungen unterstützt, wird die Teildatei einfach überschrieben.
Die folgenden rsync-Schalter sind praktisch, um eine unterbrochene Übertragung fortzusetzen, wenn scp dies nicht unterstützt:
Der Befehl
sollte den gewünschten Effekt haben. Beachten Sie, dass der
-p
Schalter für ssh in Kleinbuchstaben geschrieben sein muss.quelle
10.255.y.y
der Client-Computer war.rsync verwendet standardmäßig ssh. Möglicherweise müssen Sie den genauen Befehl ssh mit dem Schalter -e von rsync angeben. Es hat auch ein --partial, das die unvollständige Datei behalten sollte, damit es die Übertragung fortsetzen kann.
quelle
Verwenden Sie sftp anstelle von scp
In Ihrem Fall:
Von der SFTP-Manpage:
quelle
Ich kann nicht wirklich erkennen, wozu Ihre Tunnel gut sind. So würde ich Ihr Problem lösen:
Dadurch wird ein umgekehrter Tunnel vom lokalen Computer (localhost) zum Remote-Computer (remotehost) geöffnet. $ tunnelPort ist der Port, an dem sich der Tunnel auf remotehost befindet. $ localSSHPort ist der Port, auf dem der lokale sshd ausgeführt wird, und $ remoteSSHPort ist der Ort, an dem der sshd von remotehost abgehört wird.
Jetzt, wo Sie sich im (umgekehrten!) Tunnel befinden, können Sie mehr oder weniger das tun, was Dennis vorgeschlagen hat:
Die Flags -a und -z werden in der Manpage von rsync erläutert, daher werde ich nicht näher darauf eingehen. Was jetzt passiert, ist, dass wenn Sie rsync auf remotehost wie oben ausführen, alle Daten in Port $ tunnelPort übertragen werden, der dann an den sshd $ localSSHPort Ihres lokalen Hosts weitergeleitet wird.
Hoffe das hat geholfen.
quelle