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 Dateiexample.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:
-
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
-
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 dannsudo
, 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
-
Überprüfen Sie, ob
sshd
auf Ihrem Server ausgeführt wird, indem Sie Folgendes verwenden:ps aux | grep sshd
-
Wenn nicht, installieren Sie
OpenSSH
mitsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Starten Sie Ihren Server neu und stellen Sie sicher, dass
sshd
mit -
Bei Bedarf können Sie Ihre
/etc/ssh/sshd_config
-Datei konfigurieren, dies ist jedoch für einfache Konfigurationen nicht erforderlich -
Vergewissern Sie sich, dass th Die Ports werden mit
netcat
geöffnet:nc -v -z 127.0.0.1 22
-
Zum Kopieren von Dateien aus einem
Linux
Client für einenLinux
Client verwendet scp wie folgt:scp ~/filename.md [email protected]:~/folder/filename.md
-
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
-
Es gibt mehrere Clients zum Ausführen von SSH Server unter Windows, z. B.:
-
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
-
Vergleiche dieser Server:
Bitvise SSH-Server
-
Bietet fast die native
cmd
Eingabeaufforderung,powershell
Eingabeaufforderung, automatische Vervollständigung -
Bietet zusätzliche Anpassungsmöglichkeiten, wenn Sie eine erweiterte Verwendung benötigen.
-
Die Benutzeranpassung für einfache Anforderungen ist 0. Ich habe innerhalb von 2 Minuten damit begonnen, nachdem ich viel Zeit verbracht habe versuchen,
MobaSSH
undOpenSSH
zum Laufen zu bringen. -
Zum Kopieren von Dateien mit scp Verwenden Sie:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
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:
-
bietet ein Linux Shell unter Windows, in der einfache Linux-Befehle wie
ls
,cp
,find
usw., Arbeit, ähnlich wie beiMINGW64
-
können Sie auf
cmd
undpowershell
direkt durch Eingabe voncmd
oderpowershell
-
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 -
Das Tolle an MobaSSH ist, dass es eine sehr einfache Benutzeroberfläche hat, und
scp
undssh
und gut integriert. Dies funktioniert auch für einfache Anwendungsfälle. -
So kopieren Sie Dateien von einem Linux-Client auf einen Windows-Server, auf dem
MobaSSH
ausgeführt wird: Verwenden Siescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Dies liegt daran, dassMobaSSH
auf Cygwin basiert und seine Laufwerke auf dieselbe Weise zugeordnet werdencygwin
– 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.
-
Es ist sehr fehlerhaft und muss stark angepasst werden.
-
Befehlsabschluss funktioniert nicht
-
Beim Bewegen des Cursors auf dem Terminal
Python funktioniert nicht
-
-
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/