Reverse SCP über SSH-Verbindung

17

Ich brauche ziemlich oft Dateien von einem Server, wenn ich auf meinem Laptop bin. Aber wenn ich nicht weiß, wo sich diese Datei befindet, muss ich mich auf sshdem Server umsehen exitund dann scp server:file .. Wenn ich mit meinem Desktop und meinem Server arbeite, die beide statische IP-Adressen haben, kann ich die Datei einfach in umgekehrter Reihenfolge scannen ( scp desktop:~ file), aber ich kann das nicht für meinen Laptop tun. Gibt es eine gute Möglichkeit, eine Datei über eine SSH-Verbindung rückwärts zu scannen? Damit der Computer, mit dem ich mich mit SSH verbinde, eine Datei rückwärts an den Client sendet?

Pavpanchekha
quelle
Warum nicht mDNS verwenden?
Ignacio Vazquez-Abrams
1
Ich glaube, dass diese Frage hier bereits richtig beantwortet wurde: unix.stackexchange.com/a/2869
Shellster

Antworten:

20

Mit SFTP, einer Erweiterung von SSH, die komplexere Dateioperationen als SCP unterstützt, wäre dies viel einfacher. Praktisch alle modernen Unix- und Linux-Distributionen unterstützen dies. Führen Sie dazu einfach den folgenden Befehl aus, um eine Verbindung zum Server herzustellen:

sftp server

Dann können Sie die verwenden lsund cdBefehle stöbern und finden Sie die Datei , die Sie suchen. Wenn Sie es gefunden haben, können Sie es mit dem getBefehl herunterladen. Zum Beispiel zum Herunterladenfile.txt in Ihrem aktuellen Arbeitsverzeichnis auf dem Server in Ihr aktuelles Arbeitsverzeichnis auf Ihrem lokalen Computer , führen Sie einfach Folgendes aus:

get file.txt

Führen Sie stattdessen Folgendes aus, um /home/pavpanchekha/textfiles/file.txtauf dem Server ~/textfiles/auf Ihren lokalen Computer herunterzuladen :

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

Umgekehrt können Sie auf diese Weise auch Dateien hochladen. Geben file.txtSie zum Hochladen von Ihrem lokalen aktuellen Arbeitsverzeichnis in das aktuelle Arbeitsverzeichnis des Servers Folgendes ein:

put file.txt

Sie können auch vollständige Pfade für jeden verwenden, wie Sie es mit können get :

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Eine vollständige Liste der verfügbaren SFTP-Befehle erhalten Sie, wenn Sie helpan der sftp>Eingabeaufforderung ausgeführt werden.

Aufnäher
quelle
1
Das ist ziemlich cool, danke. Gibt es eine Möglichkeit, eine in umgekehrter Richtung zu starten, wenn ich bereits eine SSH-Verbindung habe? Andernfalls stelle ich fest, dass ich eine Datei übertragen möchte, die SSH-Verbindung beende, eine SFTP-Verbindung herstelle, die SSH-Verbindung beende und zurück zu SSH gehe.
Pavpanchekha
2
@pav: Die SSH_CLIENTUmgebungsvariable enthält unter anderem die IP-Adresse des verbindenden Hosts. Damit können Sie einen Shell-Alias ​​erstellen, mit dem Sie SFTP problemlos auf den Ursprungshost zurücksenden können. Fügen Sie einfach diese Zeile ~/.bashrcauf dem Server hinzu: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" Trennen Sie die Verbindung zu SSH und stellen Sie sie wieder her, damit die Änderung wirksam wird, oder führen Sie sie so aus, als wäre es ein Befehl, damit sie sofort wirksam wird. Von da an können Sie einfach sftpbackzu dem Client, von dem aus Sie eine Verbindung herstellen, zu SFTP zurückkehren, unabhängig davon, um welchen Client es sich handelt.
Patches
Das ist das Beste!!! Vielen Dank, dass Sie mich aus NANO (Online-Bearbeitung von Dateien) gerettet haben. Das macht den Vorgang so einfach.
Mohsin
0

Der Konsolendateimanager Midnight Commander (mc) verfügt über ein VFS-System, das die SFTP-Verbindung / Dateiverwaltung zu Remoteservern ermöglicht. Es läuft auch in Cygwin unter Windows. Die Standardschnittstelle zeigt zwei unabhängige Bereiche. Wir könnten das SFTP-Remote-Verzeichnis in einem von ihnen öffnen und Dateien auf einfache Weise zum / vom anderen Panel übertragen. Beinhaltet einen Datei-Editor / Viewer (mcedit) mit Syntaxhervorhebung.

Fjor
quelle