scp von Linux nach Windows [geschlossen]

72

Ich führe einen Putty-Client auf einem Windows-Computer aus, um eine erfolgreiche Verbindung zu einer Linux-Box herzustellen. Jetzt möchte ich in der Lage sein, eine Datei vom Linux-Computer unter dem Pfad /home/ubuntu/myfilezu C:/Users/Anshul/Desktopauf meinen lokalen Computer zu kopieren . Der Benutzer am Windows-Computer ist anshul. Ich gebe den folgenden Befehl auf Kitt, aber es funktioniert nicht:

scp /home/ubuntu/myfile ip_address_of_windows_machine:C:/Users/Anshul/Desktop 

Ich denke, der Pfad für den Windows-Computer ist falsch. Bitte helfen Sie, da ich in einer großen Anzahl von Foren mit dem Kopf geschlagen habe, aber keines den richtigen Pfad für den Windows-Server anzugeben scheint. Schlagen Sie keine alternativen Optionen wie vorWinScp

user1344963
quelle
3
Was läuft für einen SSH- Dienst unter Windows? Die richtige Antwort hängt von Ihrer Antwort auf diese Frage ab.
Ernest Friedman-Hill
3
Der Ausdruck "Nicht funktioniert" ist das absolut am wenigsten nützliche, was Sie sagen können, wenn Sie um Hilfe bitten. WAS funktioniert nicht? Welche Ergebnisse erzielen Sie tatsächlich? Gibt es eine Fehlermeldung? Wenn ja, fügen Sie sie in Ihren Beitrag ein.
Jeremy J Starcher
Versuchen Sie 'ssh -v ip_address_of_windows_machine dir'. Wenn Sie nicht in die Box ssh können, können Sie auch nicht in die Box scp. Die Option '-v' gibt ein Feedback darüber, wie versucht wird, eine Verbindung herzustellen, und hilft herauszufinden, ob es sich um die IP-Adresse, den SSHD-Server auf der Windows-Box usw. handelt.
Dave X
scp hello.txt Administrator@WINDOWS_MACHINE_IP:hello.txt Dadurch wurde die Datei in kopiert C:\Users\Administrator\hello.txt.
Leodotcloud
@emoblazz hat die beste Antwort, wenn Sie keine Dinge von Drittanbietern installieren möchten. Sie stellen im Grunde sicher, dass Sie Ihren Benutzernamen und @ vor
ThinkBonobo

Antworten:

81

Laden Sie es pscpvon der Putty-Download-Seite herunter und verwenden Sie es dann CMDwie folgt über die Windows-Befehlszeile :

pscp username_linux_machine@ip_of_linux_machine:/home/ubuntu/myfile.ext C:\Users\Name\Downloads

Der Kopiervorgang beginnt, sobald Sie das Kennwort für den Linux-Computer eingegeben haben.

Hesham Eraqi
quelle
Dieser Befehl hat bei mir nicht funktioniert, bis ich das Flag -scp hinzugefügt habe.
Steven Wolfe
51

Versuchen Sie dies, es funktioniert wirklich.

$ scp username@from_host_ip:/home/ubuntu/myfile /cygdrive/c/Users/Anshul/Desktop

Und zum Kopieren aller Dateien

$ scp -r username@from_host_ip:/home/ubuntu/ *. * /cygdrive/c/Users/Anshul/Desktop
Chris Alexander Sebastian
quelle
7
Beachten Sie das "/ cygdrive / c" im Pfad? Dies funktioniert nach der Installation von CYGWIN. Trotzdem ist ein toller Vorschlag!
Salvador Valencia
2
Unter Windows können Sie auch pscp verwenden (Teil des PuTTY-Pakets oder kann separat heruntergeladen werden) putty.org
The-Duck
@SalvadorValencia ubuntu @ ip-172-31-22-20: ~ $ scp try.sh Administrator @ XXXX: / cygdrive / c / Benutzer / Administrator / Desktop ssh: Verbindung zum Host herstellen XXXX Port 22: Verbindung verweigert Verbindungsverlust
Ashish Karpe
1
Ich bin auf Linux Server und möchte auf Windows Server kopieren! Wird Cygwin auch Port 22 abhören? oder welchen Port sollten wir öffnen, da mein Windows Server in einer aws ec2 Instanz ist
Ashish Karpe
2
@AshishKarpe Dies sieht so aus, als ob der Befehl ausgeführt wurde, aber es sind Router- / Firewall-Probleme aufgetreten. Führen Sie ein "Telnet XXXX 22" durch und prüfen Sie, ob der Port geöffnet wurde. Wenn nicht, sollte Stackoverflow Ihnen helfen, es beispielsweise mit iptables oder der Windows-Firewall zu lösen.
Salvador Valencia
47

Dieser hat für mich gearbeitet.

scp /home/ubuntu/myfile username@IP_of_windows_machine:/C:/Users/Anshul/Desktop 
Emoblazz
quelle
19
Dies ist die einzig wahre Antwort auf diese Frage.
Allein Programmierer
1
In meinem Fall funktionierte der Befehl aber nicht vollständig. Die folgende Meldung wird angezeigt: ssh: Verbindung zum Host <IP-Adresse> herstellen Port 22: Verbindung abgelehnt.
Alex Javarotti
1
@AlexJavarotti Der Fehler, den Sie erhalten haben, kann durch die Firewall-Einstellung verursacht werden.
ChouW
Mir ist also klar, dass es sich bei der Frage nicht um MacOS handelte, aber auf einem Mac fand ich, dass sowohl die in dieser Antwort vorgeschlagene Form funktionierte als auch eine Variante, bei der das anfängliche '/' weggelassen wurde. Also so etwas wie ...: C: / Users / ... etc. Nicht schrecklich anders, aber erwähnenswert, nehme ich an.
Cycollins
14

Zugriff von Windows über die Git Bash-Konsole:

scp root@ip:/etc/../your-file "C:/Users/XXX/Download"
Byteprom
quelle
4
Endlich ein paar Ratschläge, die funktionieren, danke!
MSC
9

Windows wird von Haus aus nicht unterstützt SSH/SCP/SFTP. Führen Sie eine SSH-Serveranwendung auf diesem Windows-Server aus? In diesem Fall befindet sich wahrscheinlich eine der Konfigurationsoptionen dort, wo sich der Stamm befindet, und Sie würden Pfade relativ zu diesem Stamm angeben. Überprüfen Sie in jedem Fall die Dokumentation der SSH-Serveranwendung, die Sie unter Windows ausführen.

Alternativ können smbclientSie die Datei auf eine Windows-Freigabe übertragen.

theglauber
quelle
17
»Windows unterstützt SSH / SCP / SFTP nicht nativ.« Linux oder ein anderes Betriebssystem auch nicht. Dafür braucht es immer einen Service.
Joey
@Joey - Wie oft habe ich eine Linux-Distribution gesehen, die eine Verbindung zum Internet herstellen soll, aber SSH / SCP / SFTP nicht vorinstalliert hat ... niemals? Wenn Sie nicht glauben, dass Linux oder MacOS diese Dinge nativ unterstützen, sind Sie entweder ahnungslos oder die Debatte ist darüber, was das Wort "nativ" bedeutet.
ArtOfWarfare
2
@ArtOfWarfare Ich bin mir ziemlich sicher, dass in Ubuntu standardmäßig kein SSH-Server installiert ist. SSH-Client ja, aber kein Server.
Bruno Finger
@BrunoFinger - Ich habe Lubuntu vor ein paar Tagen installiert und kann bestätigen, dass es standardmäßig keinen SSH-Server gab. Aber Lubuntu ist eine sehr einfache Installation von Ubuntu - ich habe sie absichtlich ausgewählt, weil der Installationsbedarf minimal war. Ich denke, die meisten anderen vorgefertigten Konfigurationen haben es bereits installiert, und auf jeden Fall war die Installation des SSH-Servers ein einzeiliger Befehl (ich glaube, das war es sudo apt-get install sshd). Sekunden später konnte ich es SSH von einem anderen Computer aus.
ArtOfWarfare
1
@Joey Trotzdem ist die Antwort nützlich, da Windows den sshd-Dienst auch in der Professional-SKU als optionale Installation ausliefert. (Ich frage mich, ob Enterprise es standardmäßig aktiviert). Es wäre leicht zu übersehen, da so viele andere Plattformen diesen Dienst standardmäßig aktivieren, weshalb es erwähnenswert ist. Man muss zu "Einstellungen / Apps / Optionale Funktionen" gehen und "OpenSSH Server" installieren. Außerdem muss der Dienst gestartet werden und sollte auf automatischen Start eingestellt sein.
Cycollins
7

Sie könnten so etwas wie das Folgende verwenden

scp -r username_Linuxmachine@LinuxMachineAddress:Path/To/File Path/To/Local/System/Directory

Dadurch wird das FileVerzeichnis in das angegebene lokale Verzeichnis auf dem System kopiert , an dem Sie gerade arbeiten.

Das -rFlag weist scpan, rekursiv zu kopieren, wenn der Remote-Pfad tatsächlich ein Verzeichnis ist.

Atif
quelle
2

Für alle, die GiT komplett mit "Git Bash" installiert haben: Sie können einfach schreiben:

scp login@ip_addres:/location/to/folders/file.tar .

(mit Leerzeichen und DOT am Ende, um an den aktuellen Speicherort zu kopieren). Dann einfach Zertifikat (y) hinzufügen, Passwort schreiben und das ist alles.

Krzysztof Walczewski
quelle
Dies ist eine einfache und großartige Lösung für Personen, die in Win env gefangen sind, insbesondere, dass git bash im portablen Modus leicht verfügbar ist, wenn Sie ohne Administratorrechte arbeiten. Vielen Dank!
Kurp
2

Ihr Code funktioniert nicht, weil c: / oder d: / für Linux völlig falsch ist. Verwenden Sie einfach / mnt / c oder / mnt / c

Verwenden Sie in Ihrem lokalen Windows 10-Ubuntu-Bash den folgenden Befehl:

zum Download: (von Ihrem Remote-Server-Ordner zu d: / ubuntu):

scp username@ipaddress:/folder/file.txt /mnt/d/ubuntu

Geben Sie dann bei Bedarf Ihr Remote-Server-Passwort ein.

zum Hochladen: (von d: / ubuntu zum Remote-Server):

scp /mnt/d/ubuntu/file.txt username@ipaddress:/folder/file.txt 

Geben Sie dann bei Bedarf Ihr Remote-Server-Passwort ein. Hinweis: Ich habe getestet und es hat funktioniert.

Baris Vvolf
quelle
2

Ich musste pscp wie oben in Heshams Post verwenden, nachdem ich Putty heruntergeladen und installiert hatte. Ich habe es unter Linux unter Windows mit Windows gemacht, also habe ich Folgendes eingegeben:

c:\ssl>pscp username@linuxserver:keenan/ssl/* .

Dadurch wird alles im Ordner sharan / ssl in den lokalen Ordner (.) Kopiert, von dem aus Sie diesen Befehl ausgeführt haben (c: \ ssl). Der scharfe / ssl gibt den Basisordner des Benutzernamensbenutzers an, beispielsweise wäre der vollständige Pfad / home / Benutzername / scharfan / ssl. Sie können einen anderen Ordner mit einem Schrägstrich (/) angeben, z

c:\ssl>pscp username@linuxserver:/home/username/keenan/ssl/* .

Sie können also einen beliebigen Ordner im Stammverzeichnis von Linux mit angeben :/.

Keenan Stewart
quelle
0

Hier ist die Lösung zum Kopieren von Dateien von Linux nach Windows mit SCP ohne Kennwort von ssh:

  1. Installieren Sie sshpass auf dem Linux-Computer, um die Kennwortabfrage zu überspringen

  2. Skript

    sshpass -p 'xxxxxxx' scp /home/user1/*.* [email protected]:/d/test/

Einzelheiten:

sshpass -p 'password' scp /source_path/*.* windowsusername@windowsMachine_ip:/destination_drive/subfolder/
Ramarajan Jothi
quelle
0

So senden Sie eine Datei von Windows an das Linux-System

scp Pfad zur Datei Benutzer @ IP-Adresse: / Pfad zum Ziel

Beispiel:

scp C:/Users/adarsh/Desktop/Document.txt [email protected]:/tmp

Beachten Sie, dass für die Datei im Windows-Pfad ein Schrägstrich (/) anstelle eines Schrägstrichs (\) verwendet werden muss, da sonst ein Fehler angezeigt wird

C: UsersadarshDesktopDocument.txt: Keine solche Datei oder kein solches Verzeichnis

. Nach dem Ausführen des Befehls scp werden Sie auf dem Linux-Computer nach dem Kennwort des Root-Benutzers gefragt . Los geht's ...

So senden Sie eine Datei von Linux an das Windows-System

scp -r user @ ipaddress: / Pfad zur Datei Pfad zum Ziel

Beispiel:

scp -r [email protected]:/tmp/Document.txt C:/Users/adarsh/Desktop/

und geben Sie Ihr Linux-Passwort ein. Nur eine, die Sie in diesem Befehl hinzufügen müssen, ist -r . Vielen Dank.

ADARSH K.
quelle
0

Bash-Fenster öffnen. Am liebsten git bash . schreiben

scp Benutzername @ remote_ip: / Verzeichnis_der_Datei / Dateiname 'Windows_Lage_Sie möchten_zu_Store_Die_Datei speichern'

Beispiel:

Angenommen, Ihr Benutzername ist ein Juwel

Ihre IP ist 176.35.96.32

Ihr entfernter Dateispeicherort ist / usr / local / forme

Ihr Dateiname lautet logs.zip

Wenn Sie im Forme-Ordner D des Windows-PCs speichern möchten, lautet der Befehl

[email protected]: /usr/local/forme/logs.zip 'D: / forme'

** Bewahren Sie das lokale Dateiverzeichnis in einfachen Anführungszeichen auf.

Zenit
quelle
0

Wie @Hesham Eraqi vorgeschlagen hat, hat es auf diese Weise für mich funktioniert (Übertragung von Ubuntu auf Windows (ich habe versucht, einen Kommentar in diese Antwort einzufügen, aber aufgrund des guten Rufs konnte ich nicht)):

pscp -v -r -P 53670 [email protected]:/data/genetic_map/sample/P2_283/* \\Desktop-mojbd3n\d\cc_01-1940_data\

wo:

-v: Ausführliche Nachrichten anzeigen.
-r: Verzeichnisse rekursiv kopieren.
-P: Verbindung zum angegebenen Port herstellen.
53670: Die Portnummer für die Verbindung zum Ubuntu-Server.
\\Desktop-mojbd3n\d\genetic_map_data\: Ich musste auf eine externe Festplatte übertragen, daher musste ich die Freigabeberechtigung für dieses Gerät erteilen.

Giannkas
quelle
-1

Ich weiß, dass dies alt ist, aber ich hatte mit dem gleichen zu kämpfen. Ich habe keine Möglichkeit gefunden, Verzeichnisse zu ändern, aber wenn Sie nur mit dem Laufwerk C arbeiten möchten, ist scp standardmäßig C. Um von Ubuntu auf Windows zu scpen, musste ich letztendlich Folgendes verwenden (beachten Sie die doppelten Schrägstriche):

scp / local / file / path [email protected]: Benutzer \\ Anshul \\ Desktop

Hoffe das hilft jemandem.

Acmag
quelle
Funktioniert es für Administratorbenutzer? Welche Konfigurationen müssen wir in der Windows-Box vornehmen?
Ashish Karpe
ubuntu @ ip-172-31-22-20: ~ $ scp try.sh Administrator @ xxxxxxx: Benutzer \\ Administrator \\ Desktop ssh: Verbindung zum Host "xxxxxx" herstellen Port 22: Verbindung verweigert Verbindungsverlust
Ashish Karpe
-7

Versuche dies:

scp /home/ubuntu/myfile C:\users\Anshul\Desktop
Corey Burnett
quelle
Ja, es hat gut funktioniert. Da ich dies auf meinem lokalen Windows-PC und SCP ausführe, kennt es mein Laufwerk C: \. Ich führe diesen Befehl nicht von der Linux-Box aus, sondern von meinem Windows-PC.
Corey Burnett
-10

Wenn Sie Einfügedateien von Unix nach Windows und Windows nach Unix kopieren möchten, verwenden Sie einfach filezilla mit Port 22.

user1645422
quelle