Wenn ich über SSH bei einem System angemeldet bin, gibt es eine Möglichkeit, eine Datei zurück auf mein lokales System zu kopieren, ohne ein anderes Terminal oder eine andere Bildschirmsitzung zu starten und scp oder ähnliches auszuführen oder ohne SSH vom fernen System zurück auf das System auszuführen lokales System?
257
scp file.foo [email protected]:file.foo
: PAntworten:
Master-Verbindung
Am einfachsten ist es, wenn Sie im Voraus planen.
Öffnen Sie das erste Mal eine Master-Verbindung. Leiten Sie für nachfolgende Verbindungen Slave-Verbindungen über die vorhandene Master-Verbindung. Richten Sie in Ihrem
~/.ssh/config
die automatische Verbindungsfreigabe ein:Wenn Sie eine SSH-Sitzung zu demselben Zeitpunkt (Benutzer, Port, Computer) wie eine vorhandene Verbindung starten, wird die zweite Sitzung über die erste getunnelt. Das Herstellen der zweiten Verbindung erfordert keine neue Authentifizierung und ist sehr schnell.
Während Sie also eine aktive Verbindung haben, können Sie schnell:
scp
oderrsync
;Weiterleitung
Auf einer bestehenden Verbindung können Sie einen Reverse-SSH-Tunnel einrichten. Erstellen Sie in der ssh-Befehlszeile eine Remote-Weiterleitung, indem Sie übergeben,
-R 22042:localhost:22
wobei 22042 eine zufällig ausgewählte Nummer ist, die sich von jeder anderen Portnummer auf dem Remote-Computer unterscheidet. Anschließend werden Siessh -p 22042 localhost
auf dem Remotecomputer wieder mit dem Quellcomputer verbunden. Sie könnenscp -P 22042 foo localhost:
zum Kopieren von Dateien verwenden.Mit können Sie dies weiter automatisieren
RemoteForward 22042 localhost:22
. Das Problem dabei ist, dass Sie die Weiterleitung nicht erhalten, wenn Sie mit mehreren Instanzen von ssh eine Verbindung zu demselben Computer herstellen oder wenn eine andere Person den Port verwendet.Wenn Sie von Anfang an keine Remote-Weiterleitung aktiviert haben, können Sie dies in einer vorhandenen SSH-Sitzung tun. Typ Enter
~C
Enter-R 22042:localhost:22
Enter. Weitere Informationen finden Sie im Handbuch unter „Escape-Zeichen“.Es gibt auch einige interessante Informationen in diesem Serverfehler-Thread .
Kopieren Einfügen
Wenn die Datei klein ist, können Sie sie eingeben und aus der Terminalausgabe kopieren und einfügen. Wenn die Datei nicht druckbare Zeichen enthält, verwenden Sie eine Codierung wie base64 .
Wenn Sie die X-Weiterleitung aktiviert haben, kopieren Sie die Datei bequemer auf den Remote-Computer und fügen Sie sie lokal ein. Sie können Daten in und aus
xclip
oder leitenxsel
. Wenn Sie den Dateinamen und die Metadaten beibehalten möchten, kopieren Sie ein Archiv und fügen Sie es ein.quelle
Ein anderer (IMO) einfacher Weg wäre:
Oder wenn Sie eine grafische Benutzeroberfläche bevorzugen, versuchen Sie es mit Midnight Commander . Sie nennen das Feature Shell-Link . Die meisten Distributionen haben sie in ihren Paketsystemen als
mc
.quelle
mc
ist am schnellsten zu bedienen.tgz
ganze Zeit mit Dateien :)SSH unterstützt einige Befehle über das Escape-Zeichen (
~
standardmäßig):Die
!args
scheint am nächsten zu sein, was Sie wollen. Beachten Sie, dass SiePermitLocalCommand
in Ihrer/etc/ssh_config
Datei aktiviert haben müssen, damit die~C
Befehle funktionieren (sieheman ssh_config
).Sie können dieselbe ssh-Sitzung wiederverwenden, wenn Sie eine
ControlMaster
in- Sitzung einrichtenssh_config
. Wenn du das tust:Sie haben die SSH-Sitzung technisch gesehen nie verlassen und müssen sich nicht erneut authentifizieren. Wahrscheinlich komplizierter als Sie möchten, aber ich kann mir keinen anderen einfachen Weg vorstellen.
quelle
!args
in der Hilfemeldung nichts finden .args
ist nicht in der ersten Hilfemeldung (~?
), aber in der zweiten (sobald man diessh>
Eingabeaufforderung mit eingibt~C
, kann manhelp
an derssh>
EingabeaufforderungDas sind alles sehr komplizierte Methoden.
Sie können das Remote-Dateisystem auf Ihrem lokalen Computer einbinden mit
sshfs
:Dann können Sie die Datei mit Nautilus, Gnome, Konqueror, Delfin, Bash oder was auch immer kopieren und einfügen.
quelle
sshfs -oIdentityFile=~/.ssh/keyfile.pem [email protected]:/ /mnt/sshfs/
-R
für Remote-to-Local-) oder Forward- (-L
für Local-to-Remote-) Ports zum Ausführen von Dateiübertragungen, vorausgesetzt, Sie haben einen Daemon für die Dateiübertragung, der auf der anderen Seite empfangsbereit ist.Aber keine davon wird wirklich benötigt, IMO. Das SSH-Protokoll unterstützt mehrere Kanäle auf einer einzigen Verbindung, und der OpenSSH-Client unterstützt Multiplexing. Vorausgesetzt, Sie haben
ControlMaster
undControlPath
eingerichtet (ControlPersist
ist auch nützlich),quelle
Noch einfacher: Öffnen Sie Filezilla (oder Ihren bevorzugten FTP-Browser), stellen Sie eine SSH-Verbindung zu derselben Site her, suchen Sie die Datei und ziehen Sie sie in Ihre lokale Dateistruktur. Wenn Sie Filezilla noch nicht kennen, verwenden Sie die Funktion "Site Manager", um das nächste Mal eine schnelle Verbindung herzustellen.
Ja, ich weiß, dass dies für die meisten von Ihnen offensichtlich ist (und nicht genau auf den Punkt), aber einige (wie ich), die diesen Thread auf der Suche nach einer Nur-Terminal-Lösung fanden, haben das Offensichtliche möglicherweise übersehen.
quelle
ssh://SERVER
.Was ich als die beste und effizienteste Lösung empfunden habe, ist die Verwendung von
xclip-copyfile
undxclip-pastefile
.Auf dem Server
xclip-copyfile
kopieren Sie eine oder mehrere Dateien. Diese Dateien stehen dann auf Ihrem lokalen Server zur Verfügung. Dort können Sie verwendenxclip-pastefile
.Dies umgeht die Notwendigkeit,
scp
einen lokalen SSH-Server zu verwenden oder zu haben. Ich benutze dies zum Beispiel mit cygwin. Das einzige Problem ist, dass dies installiertxclip
werden muss, wenn Sie es noch nicht haben. Oh, und das funktioniert auch mit Binärdateien.quelle
Einer der vielen Gründe, warum wir SecureCRT verwenden, obwohl wir Open-Source-Software bevorzugen, ist die einfache Datenübertragung. Es gibt einfach keinen direkten Ersatz in der F / OSS-Welt.
SecureCRT wurde Mitte der neunziger Jahre als reines Windows-Programm gestartet und vor einigen Jahren auf Mac OS X und Linux portiert .
SecureCRT bietet drei Hauptfunktionen zum Übertragen von Dateien zu und von einem System, in das Sie SSH-fähig sind:
ZModem , YModem , XModem , Kermit und ASCII - SecureCRT ist eine Art Terminalemulator der alten Schule, der mehrere In-Band-Dateiübertragungsprotokolle unterstützt.
Am einfachsten zu bedienen ist ZModem. Wenn Sie etwas wie
sz file-to-download
in die Remote-Befehlszeile eingeben,sz
schreibt das Remote- Programm eine Escape-Sequenz , die SecureCRT anweist, den Download sofortfile-to-download
in das Standard-Download-Verzeichnis zu starten .Eine nette Geste ist, dass das Download-Verzeichnis pro Sitzung angepasst werden kann. Wir verwenden dies, um standortspezifische Verzeichnisse auf unserem Hauptdateiserver zu haben, sodass wir heruntergeladene Dateien nicht manuell sortieren müssen.
(
sz
ist das "send ZModem" -Programm, das Teil deslrzsz
Pakets ist. Es ist bereits für die meisten Unixy-Systeme gepackt. Wenn es auf Ihrem Remote-System noch nicht installiert ist und Sie ein Binärpaket nicht einfach installieren können, wird das Daslrzsz
Quellpaket ist klein und sehr portabel. Ich musste mehrmals ein "Sharchive" oder einenuuencode
Tarball an ein abgespecktes Remote-System senden , damit ich ZModem-Dateien darauf speichern konnte.)SFTP - SecureCRT verfügt über eine eng integrierte grundlegende SFTP-Implementierung.
Mit "eng integriert" meine ich, dass bei Eingabe des SFTP-Menübefehls oder der Tastenkombination eine neue Registerkarte geöffnet wird, die über dieselbe SSH-Verbindung mit der Remote-Site verbunden ist. Sie müssen sich also nicht erneut anmelden, und die Verbindung wird etwas schneller hergestellt, als wenn Sie eine separate SFTP-Verbindung zum gleichen Server hergestellt hätten.
Ich bezeichne die SFTP-Funktion als " einfach ", da VanDyke Software ein separates Produkt für die Dateiübertragung, SecureFX, hat . Es ist leistungsfähiger als der integrierte SFTP-Client und lässt sich auch in SecureCRT integrieren.
Mit der SFTP-Funktion von SecureCRT können Sie Remote- und lokale Standardverzeichnisse konfigurieren, die von der ZModem-Konfiguration getrennt sind.
Diese SFTP-Funktion verfügt über eine grundlegende Befehlszeilenschnittstelle, die das
sftp
Programm von OpenSSH nachahmt , mit der Ausnahme, dass sie Vorteile wie die TabBefehlsausführung bietet . Daher ist das Abrufen einer aufgerufenen Remote-Dateisomefile.tar.gz
möglicherweise so einfach wieget so
TabEnter.Drag-and-Drop - Wenn Sie eine Datei per Drag-and-Drop in das Terminalfenster ziehen, wird sie automatisch
rz
für Sie eingegeben und beginnt mit dem Senden der Datei.Alternativ können Sie eine SFTP-Registerkarte öffnen und eine Datei auf dieser Registerkarte ablegen, um sie über SFTP zu senden. Somit könnte so sein , wie einfach eine Datei zu einem Remote - System sendet Alt-P, Drag , Drop .
Wir stellen fest, dass Übertragungen über SFTP viel schneller erfolgen, wahrscheinlich, weil es sich um ein TCP-basiertes Protokoll handelt. Daher profitieren sie von den großen Schiebefenstern moderner TCP / IP-Stapel . ZModem wurde in den Tagen entwickelt, als eine Blockgröße von 64 KB als "groß" eingestuft wurde. Auf diese Weise wird ein Großteil der potenziellen Geschwindigkeit in einer Verbindung in ZModem beansprucht, während jedes Ende auf Blockübertragungsbestätigungen wartet.
Das Schöne an der Drag-and-Drop-Funktion ist, dass die Verwendung von ZModem eine der größten Belastungen darstellt. Wenn Sie
rz
auf dem Remote-System etwas eingeben, öffnet SecureCRT automatisch eine Dateiauswahl. Sie haben dann ungefähr eine Minute Zeit, um die Datei zu suchen und auszuwählen, bevor das Timeout der Remote-Seite abläuft. Dies schafft einen Wettlauf gegen die Uhr, der nicht angenehm ist. Durch Ziehen und Ablegen können Sie die Datei nach Belieben finden und die Übertragung dann mit einer einzigen schnellen Mausbewegung starten.Wir verwenden weiterhin die manuelle Methode und starten die Übertragung mit einem expliziten
rz
Befehl. Dies liegt daran, dass Sie mit SecureCRT ein Upload-Verzeichnis pro Sitzung konfigurieren können, das auf den Ordner auf dem Dateiserver verweist, der immer den neuesten Build der Software enthält, die auf der jeweiligen Remote-Site ausgeführt wird. Für solche Übertragungen gibt es kein Rennen gegen die Uhr, da die Dateiauswahl an der richtigen Stelle geöffnet wird.quelle
Verwenden "!" um die Datei in eine ASCII-Darstellung Ihrer Datei zu konvertieren (zB
! uuencode myfile.bin >uuencode.dat
). Dann benutze! cat uuencode.dat >target.dat
. Danach benutze uudecode auf der Zielseite:! uudecode target.dat >myfile.bin
quelle