it-swarm.com.de

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

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

Ich benutze 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 ssh mit einem Remote-Computer, wie:

ssh -p 2222 [email protected]

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

[email protected] ~ $

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

scp -r -P 2222 file.ext [email protected] 

ausgabe ist:

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

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

scp -r -P 2222 /home/name/dir/file.ext [email protected] 

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

scp -r -P 2222 file.ext [email protected]:~/

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 kein solches Verzeichnis
  • Shell "klebte" an ~ /

Irgendwelche Vorschläge?

111
dragonmnl

Sie müssen den Befehl scp auf dem lokalen Computer ausführen, nicht auf der Fernbedienung. Sie brauchen das ssh überhaupt nicht:

[email protected] $ scp -P 2222 file.ext [email protected]:~/ 

Sie brauchen 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 sicherstellen, dass auf Ihren lokalen Computer über das Internet zugegriffen werden kann und ssh eingerichtet ist. Ich glaube nicht, dass Sie danach suchen, aber wenn ja, führen Sie dies einfach von der Fernbedienung aus:

[email protected] $ scp [email protected]:/path/to/file.ext ~/
127
terdon

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 hoch/runter:

1.

Kopieren Sie 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 [email protected]:/home/xxx/xxx/11.jpeg /Users/username/Desktop/  

Dateien im lokalen Verzeichnis in den Remote-Dienst kopieren: Sie müssen sich auch im lokalen Bash-Terminal befinden

scp /Users/username/Desktop/11.jpeg [email protected]:/home/xxx/xxx
  1. Um die gleiche Absicht zu erreichen wenn Sie sich bei SSH anmelden, müssen Sie zuerst "Systemeinstellungen> Freigabe> Remote-Anmeldung> Alle Benutzer" festlegen (ich bin nicht sicher, ob Sie "Alle Benutzer" festlegen müssen). , aber es funktioniert in dieser Situation) "Der Mac teilt Ihnen mit," Um sich remote bei diesem Computer anzumelden, geben Sie Folgendes ein: ssh username @ xxxxxx, und geben Sie dann den folgenden Befehl ein:

    scp Benutzername @ Domäne: /home/xxx/xxx/11.jpeg Benutzername @ xxxxxx:/Benutzer/Benutzername/Desktop /

Dieser Befehl oben dient zum Herunterladen von Dateien von remote auf lokal, wenn Sie sich bei ssh anmelden. Ändern Sie einfach die beiden Pfade, wenn Sie Dateien hochladen möchten.

33
maizer

Wenn Sie diesen scp-Befehl auf dem Remotecomputer ausführen, sucht er nach file.ext Als "lokale" Datei, d. H. auf dem Remotecomputer.

Verwenden Sie scp -P 2222 [email protected]:dir/file.ext localdir, Um eine Datei vom Remotecomputer auf den lokalen Computer zu kopieren (vorausgesetzt, file.ext Befindet sich wie in Ihrem Beispiel in ~/dir Auf dem Remotecomputer). Wenn Sie scp auf dem Remote-Computer ausführen, kehren Sie "local" und "remote" um.

5
alexis

Verwenden Sie den Befehl scp

Wenn Sie einen Ordner übertragen möchten, müssen Sie ihn zuerst Zip, später unzip verwenden.

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 ist die IP-Adresse des Remote-Servers. Wir werden the_file bis ~/ Ordner auf der Fernbedienung.

Datei entpacken:

$ unzip the_Zip_file.Zip -d destination_folder
4
Catbuilts

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

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

1

Lösung zum Kopieren von Dateien von Linux client Nach 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-clienthttps://www.tecmint.com/install-openssh-server-in-linux/

  3. Starten Sie Ihren Server neu und stellen Sie sicher, dass sshd mit ps aux | grep sshd Ausgeführt wird.

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

  5. überprüfen Sie mit netcatnc -v -z 127.0.0.1 22, ob die Ports geöffnet sind.

  6. Um Dateien von einem Linux Client auf einen Linux Client zu kopieren, verwenden Sie 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 von Linux client Nach `Windows

  1. Es gibt mehrere Clients zum Ausführen von SSH-Servern unter Windows, z. B. OpenSSH von MS

    MobaSSH

    Bitvise SSH Server

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

    netsh advfirewall firewall add rule name = "SSH Port 22" dir = in Aktion = Protokoll zulassen = 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 hat den Status allprofiles deaktiviert

  3. Vergleiche dieser Server:

    Bitvise SSH-Server

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

    2. Bietet zusätzliche Anpassungsfunktionen, 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 damit verbracht hatte, MobaSSH und OpenSSH zum Laufen zu bringen.

    4. Um Dateien mit scp zu kopieren, 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 eine Linux-Shell unter Windows, in der einfache Linux-Befehle wie ls, cp, find usw. funktionieren, ähnlich wie MINGW64

    2. sie können direkt auf cmd und powershell zugreifen, indem Sie cmd oder powershell eingeben

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

    4. Das Tolle an MobaSSH ist, dass es eine sehr einfache Benutzeroberfläche hat und scp und ssh gut integriert ist. Funktioniert also 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 ist basierend auf cygwin und seinen Laufwerken werden auf die gleiche Weise zugeordnet, wie cygwin- Laufwerke zugeordnet werden.

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

    1. Es ist sehr fehlerhaft und Sie müssen es stark anpassen.

    2. Befehlsabschluss funktioniert nicht

    3. Es bleiben Leerzeichen, wenn Sie den Cursor auf dem Terminal bewegen

    4. Python funktioniert nicht

    5. Spätere Versionen von OpenSSH haben es möglicherweise verbessert. Weitere MS scheinen OpenSSH über Optional Featureshttps://developer.Microsoft.com/en-us/Microsoft-Edge/tools/vms/ verfügbar zu machen

0
alpha_989