GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ssh – Eine Datei mit Ssh zurück auf das lokale System kopieren?

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 weiteres Terminal oder eine Bildschirmsitzung zu starten und scp oder ähnliches auszuführen, oder ohne SSH vom Remote-System zurück zum lokales System?

Akzeptierte Antwort:

Master-Verbindung

Am einfachsten ist es, wenn Sie im Voraus planen.

Öffnen Sie zum ersten Mal eine Master-Verbindung. Leiten Sie für nachfolgende Verbindungen Slave-Verbindungen durch die vorhandene Master-Verbindung. In Ihrem ~/.ssh/config , Richten Sie die Verbindungsfreigabe so ein, dass sie automatisch erfolgt:

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

Wenn Sie eine ssh-Sitzung mit demselben (Benutzer, Port, Maschine) wie eine bestehende Verbindung starten, wird die zweite Sitzung über die erste getunnelt. Der Aufbau der zweiten Verbindung erfordert keine erneute Authentifizierung und geht sehr schnell.

Während Sie also eine aktive Verbindung haben, können Sie schnell:

  • Kopieren Sie eine Datei mit scp oder rsync;
  • Mounten Sie ein entferntes Dateisystem mit sshfs.

Weiterleitung

Bei einer bestehenden Verbindung können Sie einen Reverse-SSH-Tunnel aufbauen. Erstellen Sie in der ssh-Befehlszeile eine Remote-Weiterleitung, indem Sie -R 22042:localhost:22 übergeben wobei 22042 eine zufällig gewählte Nummer ist, die sich von jeder anderen Portnummer auf dem Remote-Computer unterscheidet. Dann ssh -p 22042 localhost auf dem Remote-Rechner verbindet Sie zurück mit dem Quell-Rechner; Sie können scp -P 22042 foo localhost: verwenden um Dateien zu kopieren.

Sie können dies mit RemoteForward 22042 localhost:22 weiter automatisieren . Das Problem dabei ist, dass Sie die Weiterleitung nicht erhalten, wenn Sie sich mit mehreren Instanzen von ssh mit demselben Computer verbinden oder wenn jemand anderes den Port verwendet.

Wenn Sie die Remote-Weiterleitung nicht von Anfang an aktiviert haben, können Sie dies in einer bestehenden SSH-Sitzung tun. Geben Sie Enter ein ~C Eingabe -R 22042:localhost:22 Eingabe .
Weitere Informationen finden Sie unter „Escape-Zeichen“ im Handbuch.

Es gibt auch einige interessante Informationen in diesem Server-Fault-Thread.

Kopieren und 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 Kodierung wie base64.

remote.example.net$ base64 <myfile
(copy the output)
local.example.net$ base64 -d >myfile
(paste the clipboard contents)
Ctrl+D

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 leiten oder xsel . Wenn Sie den Dateinamen und die Metadaten beibehalten möchten, kopieren Sie ein Archiv und fügen Sie es ein.

remote.example.net$ tar -czf - myfile | xsel

local.example.net$ xsel | tar -xzf -

Linux
  1. Überprüfen Sie mit ssh, ob die Datei auf dem Remote-Host vorhanden ist

  2. SSH mit authorisierten_Schlüsseln zu einem Ubuntu-System mit verschlüsseltem Homedir?

  3. Wie kann ich die Ausgabe eines Remote-Befehls in die lokale Zwischenablage kopieren?

  4. Rsync mit SSH-Aufforderung zur Eingabe des Remote-Passworts

  5. Kann ich die SSH-Schlüsselauthentifizierung verwenden, um mich mit einem anderen Benutzernamen bei einem Remote-System anzumelden?

So erstellen Sie einen persönlichen Dateiserver mit SSH unter Linux

SSH-Befehle in Linux mit Verwendungsbeispielen

SSHFS:Mounten eines Remote-Dateisystems über SSH

Lsyncd – Lokale Verzeichnisse mit Remote-Linux synchronisieren

Linux-Datei kopieren mit ETA?

iptables leiten lokale Verbindungen zum entfernten System/Port um