Verwenden Sie scp, um eine Datei vom lokalen Verzeichnis X in das Remote-Verzeichnis Y zu übertragen.

Ich habe mich hier und in anderen Tutorials zur Verwendung von scp umgesehen Internet, aber ich kann nicht herausfinden, was falsch ist.

Ich verwende Linux Mint und versuche herauszufinden, wie scp funktioniert.

Ich habe eine Datei file.ext (auf meinem Computer) im Verzeichnis / home / name / dir /

Ich verbinde mich mit eine entfernte Maschine, die ssh verwendet, wie:

ssh -p 2222 username@domain 

Es fragt mich nach dem Passwort und die Shell zeigt Folgendes an:

username@domain ~ $ 

Wenn ich den Befehl gebe (bevor ich ssh ausführte, befand ich mich im lokalen Verzeichnis / home / name / dir ):

scp -r -P 2222 file.ext username@domain 

Ausgabe ist:

cp: cannot stat ‘file.ext’: No such file or directory 

Gleiches Ergebnis, wenn ich anstelle von file.ext den vollständigen Pfad

scp -r -P 2222 /home/name/dir/file.ext username@domain 

schreibe. Außerdem hat mir der Serveradministrator mitgeteilt, dass ich die Datei in mein Remote-Ausgangsverzeichnis hochladen soll (anstelle von root), wie:

scp -r -P 2222 file.ext username@domain:~/ 

, aber wenn ich es tue und „Enter“ drücke, passiert nichts, als ob die Shell auf weitere Eingaben warten würde.

Zusammenfassung meiner Probleme:

  • cp: Keine solche Datei oder Verzeichnis-Shell
  • „steckt“ auf ~ /

Irgendwelche Vorschläge?

Kommentare

  • ‚ ist etwas unklar, ob Ihr Problem vorliegt nur im Zusammenhang mit dem falschen Computer … könnten Sie bitte jedem Befehl den Host voranstellen, auf dem Sie ausgeführt werden? z.B. localuser@machineA: ssh -p 2222 username@domain (um anzuzeigen, dass Sie den Befehl ssh als lokaler Benutzer auf Maschine A ausführen)
  • bei Verwendung von scp, the Die entfernte Seite muss immer den Doppelpunkt enthalten (z. B. remotehost:/tmp), andernfalls wird nur eine normale Kopie erstellt (scp /tmp/foo.txt example.com kopiert /tmp/foo.txt in eine lokale Datei example.com)
  • entfernt die -r -Flag, da dies nicht zum Kopieren einzelner Dateien erforderlich ist (‚ wird zum rekursiven Kopieren von Verzeichnissen verwendet)
  • Geben Sie den Befehl scp innerhalb der sshe-Sitzung aus? Es wäre sinnvoll, wenn Sie sich auf dem lokalen Computer befinden.

Antwort

Sie müssen scp Befehl vom lokalen Computer, nicht auf der Fernbedienung. Sie benötigen die ssh überhaupt nicht:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

Sie benötigen auch nicht die -r:

 -r Recursively copy entire directories. 

Wenn Sie bereits am Remotecomputer angemeldet sind und von Ihrem lokalen Computer kopieren möchten, müssen Sie dies tun Stellen Sie sicher, dass Ihr lokaler Computer über das Internet erreichbar ist und ssh eingerichtet ist. Ich glaube nicht, dass Sie danach suchen, aber wenn ja, führen Sie dies einfach über die Fernbedienung aus:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/ 

Kommentare

  • Danke. Das Problem war, dass ich versucht habe, scp in einer SSH-Sitzung auszuführen. Jetzt funktioniert es!

Antwort

Ich biete zwei Methoden zum Hoch- / Herunterladen von Dateien zwischen Remote- und lokalem Computer an (ich verwende Mac Air):

In diesem Fall möchte ich 11.jpeg zwischen lokal und remote:

  1. Kopieren von Dateien im Dienst in das lokale Verzeichnis: Sie müssen sich im lokalen Bash-Terminal befinden, um diesen Befehl auszuführen, nicht wenn Sie sich in ssh befinden!

    scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/ 

    kopiert Dateien im lokalen Verzeichnis nach Remote-Service: Außerdem müssen Sie sich im lokalen Bash-Terminal

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. Um die gleiche Absicht zu erreichen , wenn Sie sich bei der SSH anmelden , müssen Sie zuerst “ Systemeinstellungen > Freigabe > Remote-Anmeldung > aller Benutzer (ich bin nicht sicher, ob Sie müssen für “ alle Benutzer “ festlegen, aber es funktioniert in dieser Situation. Der Mac teilt Ihnen Um sich remote bei diesem Computer anzumelden, geben Sie Folgendes ein:

    ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/** 

Dieser Befehl dient zum Herunterladen von Dateien Wenn Sie sich bei ssh anmelden, ändern Sie einfach die beiden Pfade, wenn Sie eine Datei hochladen möchten.

Kommentare

  • Schließlich finde ich, dass Filezilla wahrscheinlich die bequemste in der täglichen Arbeit ist ~~

Antwort

Verwenden Sie den Befehl scp

Wenn Sie einen Ordner übertragen möchten, Nur zip zuerst können wir unzip es später ausführen.

Führen Sie auf Ihrem Computer Folgendes aus:

$ scp your_path_to_the_file/the_file [email protected]:~/ 

Hier ist root Ihr Konto und 10.145.198.100 das IP-Adresse des Remote-Servers. Wir werden the_file in den Ordner ~/ in der Remote kopieren.

Datei entpacken:

$ unzip the_zip_file.zip -d destination_folder 

Kommentare

  • Warum sollte root sogar SSH-Zugriff auf dem Remote-Computer? Das ‚ ist ziemlich unsicher. Verwenden Sie besser eine normale Verwendung und dann sudo, um das zu tun, was root auf diesem Computer zu tun hat.

Antwort

Wenn Sie diesen scp-Befehl auf dem Remotecomputer ausführen, wird file.ext als „lokale“ Datei gesucht, dh auf dem Remotecomputer.

Verwenden Sie scp -P 2222 username@domain:dir/file.ext localdir (vorausgesetzt, file.ext befindet sich in ~/dir auf dem Remotecomputer, wie in Ihrem Beispiel) Wenn Sie scp auf dem Remotecomputer ausführen, kehren Sie „local“ und „remote“ um.

Kommentare

  • Das OP möchte von lokal nach remote kopieren, siehe den Titel des OP ‚.
  • Hoppla, ich denke Sie ‚ hat recht. Aber er ‚ macht es anscheinend rückwärts …

Antwort

Nur ein kleiner Beitrag, vielleicht kann er Anfängern wie mir helfen: Der Pfad zum Remote-Verzeichnis sollte folgendermaßen geschrieben werden: username@domain:~/remote_directory

Was ich hier hervorheben möchte, ist, dass wir immer hinzufügen sollten, dass :~/

Antwort

Lösung zum Kopieren von Dateien vom Linux-Client auf den Linux-Server

  1. Überprüfen Sie, ob sshd auf Ihrem Server ausgeführt wird, indem Sie Folgendes verwenden: ps aux | grep sshd

  2. Wenn nicht, installieren Sie OpenSSH mit sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Starten Sie Ihren Server neu und stellen Sie sicher, dass sshd mit

  4. Bei Bedarf können Sie Ihre /etc/ssh/sshd_config -Datei konfigurieren, dies ist jedoch für einfache Konfigurationen nicht erforderlich

  5. Vergewissern Sie sich, dass th Die Ports werden mit netcat geöffnet: nc -v -z 127.0.0.1 22

  6. Zum Kopieren von Dateien aus einem Linux Client für einen Linux Client verwendet scp wie folgt: scp ~/filename.md [email protected]:~/folder/filename.md

  7. Um zu überprüfen, ob die Datei kopiert wurde, verwenden Sie ssh [email protected] und geben Sie Ihr Passwort ein.

Lösung zum Kopieren von Dateien vom Linux-Client auf Windows

  1. Es gibt mehrere Clients zum Ausführen von SSH Server unter Windows, z. B.:

  2. Installieren Sie einen der oben genannten Server und stellen Sie sicher, dass Port 22 mit

    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=UDP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=UDP localport=22 
    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=TCP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=TCP localport=22 
    netsh advfirewall set allprofiles state off 
  3. Vergleiche dieser Server:

    Bitvise SSH-Server

    1. Bietet fast die native cmd Eingabeaufforderung, powershell Eingabeaufforderung, automatische Vervollständigung

    2. Bietet zusätzliche Anpassungsmöglichkeiten, wenn Sie eine erweiterte Verwendung benötigen.

    3. Die Benutzeranpassung für einfache Anforderungen ist 0. Ich habe innerhalb von 2 Minuten damit begonnen, nachdem ich viel Zeit verbracht habe versuchen, MobaSSH und OpenSSH zum Laufen zu bringen.

    4. Zum Kopieren von Dateien mit scp Verwenden Sie: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Kostenlos für den persönlichen Gebrauch, 99 US-Dollar für den professionellen Gebrauch. Aufgrund der vielen Funktionen und der hervorragenden Integration ist der Preis das Geld wert.

    MobaSSH:

    1. bietet ein Linux Shell unter Windows, in der einfache Linux-Befehle wie ls, cp, find usw., Arbeit, ähnlich wie bei MINGW64

    2. können Sie auf cmd und powershell direkt durch Eingabe von cmd oder powershell

    3. Die Unicode-Unterstützung ist schlecht. Die Codierung ist nicht korrekt. Wenn Sie beispielsweise versuchen, den Python -Interpretator zu starten, stürzt er ab. Sie müssen die Codierung manuell ändern mit ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 und dann Python-Eingabeaufforderung starten

    4. Das Tolle an MobaSSH ist, dass es eine sehr einfache Benutzeroberfläche hat, und scp und ssh und gut integriert. Dies funktioniert auch für einfache Anwendungsfälle.

    5. So kopieren Sie Dateien von einem Linux-Client auf einen Windows-Server, auf dem MobaSSH ausgeführt wird: Verwenden Sie scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Dies liegt daran, dass MobaSSH auf Cygwin basiert und seine Laufwerke auf dieselbe Weise zugeordnet werden cygwin – s Laufwerke sind zugeordnet.

    Verwenden Sie VMs von Microsoft mit OpenSSHv6.7, das von https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 ist bereits installiert.

    1. Es ist sehr fehlerhaft und muss stark angepasst werden.

    2. Befehlsabschluss funktioniert nicht

    3. Beim Bewegen des Cursors auf dem Terminal

    4. Python funktioniert nicht

  4. Spätere Versionen von OpenSSH haben es möglicherweise verbessert. Außerdem scheint MS OpenSSH über Optionale Funktionen “ https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Antwort

Wenn Sie sich gerade unter OSX befinden …

Als ich versuchte, es mit dem Benutzernamen @ local: / file_directory auszuführen …

wurde folgende Fehlermeldung angezeigt:

ssh: local: node name or service name not known 

Lösung

Auf meinem Mac musste ich Folgendes tun, um das lokale ssh einzurichten:

Systemeinstellungen -> Internet & Netzwerk -> Freigabe -> AKTIVIEREN Remote Login

Dies lieferte dann den Benutzernamen @ IP-Adresse.

Antwort

Ich hatte heute das gleiche Problem auf dem MAC.

Geben Sie den folgenden Befehl ein:

scp /local-file-path/ /-remote-location-path/ 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.