Kopieren von Dateien vom Server auf einen lokalen Computer mit SSH [geschlossen]

75

Ich habe Probleme beim Kopieren von Dateien von einem Remote-Server mit SSH. Mit PuTTY melde ich mich mit SSH beim Server an. Sobald ich die Datei gefunden habe, die ich auf meinen Computer kopieren möchte, verwende ich den folgenden Befehl:

scp [email protected]:/dir/of/file.txt \local\dir\

Es sieht so aus, als ob es erfolgreich war, aber es wird nur ein neuer Ordner mit der Bezeichnung "localdir" im Remote-Verzeichnis erstellt /dir/of/.

Wie kann ich die Datei über SSH auf meinen lokalen Computer kopieren?

Vincent
quelle
Ihre Frage ist dazu nicht klar: Laufen Sie scpauf Ihrem lokalen Computer oder in der Remote-Shell über SSH?
William Price
Ich glaube, in der Remote-Shell über SSH.
Vincent

Antworten:

143

Dies hängt von Ihrem lokalen Betriebssystem ab.

Wenn Ihr lokales Betriebssystem Unix-ähnlich ist, versuchen Sie Folgendes:

scp username@remoteHost:/remote/dir/file.txt /local/dir/

Wenn Ihr lokales Betriebssystem Windows ist, sollten Sie das pscp.exeDienstprogramm verwenden. Mit dem folgenden Befehl wird beispielsweise file.txt von der Remote-Datei auf die D:Festplatte des lokalen Computers heruntergeladen .

pscp.exe username@remoteHost:/remote/dir/file.txt d:\

Es scheint, dass Ihr lokales Betriebssystem Unix ist. Versuchen Sie es also mit dem vorherigen.


Für diejenigen, die nicht wissen, was pscp.exeist und nicht wissen, wo es ist, können Sie es jederzeit auf der putty offiziellen Website herunterladen. Öffnen Sie dann eine CMD-Eingabeaufforderung und wechseln Sie in das Verzeichnis pscp.exe, in dem Sie es abgelegt haben. Führen Sie dann den Befehl wie oben angegeben aus

Mainframer
quelle
Mein lokales Betriebssystem ist Windows. Ich habe die Datei pscp.exe von der Kitt-Website heruntergeladen. Ich habe versucht, es zu öffnen, und es kam nichts heraus. Außerdem habe ich den oben aufgeführten Befehl ausprobiert und den folgenden Befehl erhalten: pscp.exe-Befehl nicht gefunden. Versuchte es auch ohne die .exe und führte zu dem gleichen Fehler.
Vincent
2
Öffnen Sie eine CMD-Eingabeaufforderung und wechseln Sie in das Verzeichnis pscp.exe, in dem Sie sie abgelegt haben. Führen Sie dann den Befehl wie oben angegeben aus.
Mainframer
1
Die Verwendung von scp auf einem Mac muss mit dem Parameter ./ angegeben werden, um anzuzeigen, dass die Datei im aktuellen Ordner auf dem Mac heruntergeladen werden muss.
Sarang Manjrekar
1
Mit Windows Subsystem für Linux (WSL, im Grunde Ubuntu unter Windows) können Sie jetzt auch Bash öffnen, wenn Ihr lokales Betriebssystem Windows ist, und einfach scp verwenden. Tipp: Sie können über die WSL auf Ihr Windows-Dateisystem zugreifen. Es ist unter / mnt / c. Sie können also so etwas tun:scp username@remoteHost:/remote/dir/file.txt /mnt/c
gijswijs
1
Ab dem Herbst-Update 2018 ist Windows 10 jetzt mit OpenSSH ausgestattet und befindet sich auf PATH. Dies bedeutet, dass Sie den scpBefehl auch unter Windows 10 verwenden können.
Ausflug
12

Ihre Frage ist etwas verwirrend, aber ich gehe davon aus, dass Sie zuerst 'ssh' ausführen, um herauszufinden, welche Dateien oder speziell Verzeichnisse vorhanden sind, und dann erneut auf Ihrem lokalen Computer versuchen, 'alle' Dateien in diesem Verzeichnis zu scpen zum lokalen Pfad. du solltest es einfach tun scp -r.

Hier in Ihrem Fall wäre es also so etwas wie

local> scp -r [email protected]:/path/to/dir local/path 

Wenn Sie eine andere ausführbare Datei verwenden, die "scp-ähnliche Funktionen" bietet, lesen Sie das Handbuch zum rekursiven Kopieren von Dateien.

gabhijit
quelle
5

Stellen Sie sicher, dass der Befehl scp auf beiden Seiten verfügbar ist - sowohl auf dem Client als auch auf dem Server .

BEIDES Server und Client, andernfalls wird auf Ihrem Client eine solche (seltsame) Fehlermeldung angezeigt: scp: command not foundoder etwas Ähnliches, obwohl Sie alles lokal konfiguriert haben.

0yeoj
quelle
5

Sie müssen die Datei in beiden Verzeichnispfaden benennen.

scp [email protected]:/dir/of/file.txt \local\dir\file.txt
Andy
quelle
2
Ich glaube nicht, dass das richtig ist. Wenn das Ziel ein Verzeichnis ist, wird die Datei dort mit demselben Dateinamen wie die Quelle abgelegt.
William Price
@ WilliamPrice Ich denke, es hängt vom lokalen Betriebssystem ab
0yeoj
1
@ 0yeoj Welches lokale Betriebssystem ist das für meine Erbauung? Ich habe Fedora und Win8.1 dual gebootet und überprüft, dass die Angabe nur des Zielverzeichnisses sowohl mit der Linux-Version von scp als auch mit den von Putty bereitgestellten ausführbaren pscp- Dateien funktioniert .
William Price
@WilliamPrice, versuchen Sie, mainframerdie Antwort Ihrer wahrscheinlichen Prüfung zu überprüfen , und Sie haben Recht mit Wenn das Ziel ein Verzeichnis ist, wird die Datei dort mit demselben Dateinamen wie die Quelle abgelegt.
0yeoj
Es scheint, dass ich mich tatsächlich geirrt habe.
Andy
2

Dieser Befehl scp muss in der lokalen Befehlszeile ausgegeben werden. Für Putty lautet der Befehl pscp.

C:\something> pscp [email protected]:/dir/of/file.txt \local\dir\
Jasen
quelle
Ich habe die Datei pscp.exe von putty heruntergeladen und versucht, sie zu öffnen, aber es wurde nichts angezeigt. Dann habe ich den Befehl in der Anwendung putty.exe ausprobiert und einen Fehler erhalten: Der Befehl pscp wurde nicht gefunden.
Vincent
Es muss in Ihrem Pfad installiert werden, da Sie sich dessen anscheinend nicht bewusst sind. Möglicherweise ist Filezilla einfacher zu verwenden als scp.
Jasen