Ich habe mich hier bei anderen Fragen und in verschiedenen Tutorials zur "scp usage" im Internet umgesehen, aber ich kann nicht herausfinden, was los 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 einer entfernten Maschine mit ssh , wie:
ssh -p 2222 username@domain
es fragt mich nach dem Passwort und die Shell zeigt an:
username@domain ~ $
Wenn ich jetzt den Befehl gebe (bevor ich ssh ausgeführt habe, 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 schreibe
scp -r -P 2222 /home/name/dir/file.ext username@domain
Der Serveradministrator teilte mir außerdem mit, dass ich die Datei in mein Remote-Ausgangsverzeichnis (anstelle von root) hochladen soll. Beispiel:
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 gewartet hätte.
Zusammenfassung meiner Probleme:
- cp: keine solche Datei oder Verzeichnis
- Shell "stecken" auf ~ /
Irgendwelche Vorschläge?
localuser@machineA: ssh -p 2222 username@domain
(um anzuzeigen, dass Sie den Befehl ssh als localuser auf machineA ausführen)scp
muss die entfernte Seite immer den Doppelpunkt enthalten (z. B.remotehost:/tmp
), sonst wird nur eine normale Kopie erstellt (scp /tmp/foo.txt example.com
wird/tmp/foo.txt
in eine lokale Dateiexample.com
-r
Flag, da dies nicht zum Kopieren einzelner Dateien benötigt wird (es wird zum rekursiven Kopieren von Verzeichnissen verwendet)Antworten:
Sie müssen den
scp
Befehl auf dem lokalen Computer ausführen , nicht auf der Fernbedienung. Das brauchst du gar nichtssh
:Das brauchst du auch nicht
-r
:Wenn Sie bereits am Remote-Computer angemeldet sind und von Ihrem lokalen Computer kopieren möchten, müssen Sie sicherstellen, dass Ihr lokaler Computer über das Internet erreichbar ist und
ssh
eingerichtet wurde. Ich glaube nicht, dass Sie danach suchen, aber wenn ja, führen Sie dies einfach von der Fernbedienung aus:quelle
Ich biete zwei Methoden zum Hoch- und Herunterladen von Dateien zwischen einem entfernten und einem lokalen Computer an (ich verwende Mac air):
In diesem Fall möchte ich "11.jpeg" zwischen lokal und remote hoch / runter setzen:
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 dies 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 @ domain: /home/xxx/xxx/11.jpeg Benutzername @ xxxxxx: / Users / username / Desktop /
Der obige Befehl dient zum Herunterladen von Dateien von Remote zu Local, wenn Sie sich bei ssh anmelden. Ändern Sie einfach die beiden Pfade, wenn Sie Dateien hochladen möchten.
quelle
Wenn Sie diesen scp-Befehl auf dem Remote-Computer ausführen, wird nach
file.ext
einer "lokalen" Datei gesucht , dh auf dem Remote-Computer.Um eine Datei aus dem Remote - Rechner auf den lokalen einem zu kopieren, verwenden
scp -P 2222 username@domain:dir/file.ext localdir
(unter der Annahme , dassfile.ext
in~/dir
auf dem Remote - Computer, wie in Ihrem Beispiel). Wenn Siescp
auf dem Remotecomputer ausgeführt werden, kehren Sie "local" und "remote" um.quelle
Verwenden Sie den
scp
BefehlWenn Sie einen Ordner übertragen möchten
zip
, können wirunzip
ihn erst später übernehmen.Führen Sie auf Ihrem Computer Folgendes aus:
Hier
root
ist Ihr Konto und10.145.198.100
die IP-Adresse des Remoteservers. Wir werden inthe_file
den~/
Ordner auf der Fernbedienung kopieren .Datei entpacken:
quelle
root
der Remote-Computer überhaupt über SSH-Zugriff verfügen? Das ist ziemlich unsicher. Es ist besser, einen normalen Gebrauch zu machen und dannsudo
alles zu tun, was root auf diesem Rechner zu tun hat.Nur ein kleiner Beitrag, vielleicht kann er Anfängern wie mir helfen: Der Pfad zum entfernten Verzeichnis sollte so geschrieben sein:
username@domain:~/remote_directory
Was ich hier hervorheben möchte, ist, dass wir das immer hinzufügen sollten
:~/
quelle
Lösung zum Kopieren von Dateien von
Linux client
nachLinux Server
Überprüfen Sie, ob
sshd
auf Ihrem Server Folgendes ausgeführt wird: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 überprüfen Sie, ob
sshd
er mit ausgeführt wirdps aux | grep sshd
Bei Bedarf können Sie Ihre
/etc/ssh/sshd_config
Datei konfigurieren , dies ist jedoch für einfache Konfigurationen nicht erforderlichVergewissern Sie sich, dass die Ports geöffnet sind
netcat
nc -v -z 127.0.0.1 22
Um Dateien von einem
Linux
Client auf einenLinux
Client zu kopieren, verwenden Sie scp wie folgtscp ~/filename.md [email protected]:~/folder/filename.md
Um zu überprüfen, ob die Datei kopiert wurde,
ssh [email protected]
geben Sie Ihr Passwort ein.Lösung zum Kopieren von Dateien
Linux client
nach WindowsEs gibt mehrere Clients für die Ausführung von SSH-Servern unter Windows, z. B. OpenSSH von MS
MobaSSH
Bitvise-SSH-Server
Installieren Sie einen der oben genannten Server und stellen Sie sicher, dass Port 22 über geöffnet ist
netsh advfirewall Firewall Regel hinzufügen name = "SSH Port 22" dir = in Aktion = Protokoll zulassen = UDP localport = 22
netsh advfirewall firewall add rule name = "SSH-Port 22" dir = out action = Protokoll zulassen = UDP localport = 22
netsh advfirewall firewall add rule name = "SSH-Port 22" dir = in action = Protokoll zulassen = TCP localport = 22
netsh advfirewall firewall add rule name = "SSH-Port 22" dir = out action = Protokoll zulassen = TCP localport = 22
netsh advfirewall hat den Status allprofiles deaktiviert
Vergleiche dieser Server:
Bitvise-SSH-Server
Bietet nahezu native
cmd
Eingabeaufforderung,powershell
Eingabeaufforderung, automatische VervollständigungBietet zusätzliche Anpassungsmöglichkeiten, falls 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 damit verbracht hatte, zu arbeiten
MobaSSH
undOpenSSH
zu arbeiten.So kopieren Sie Dateien mit scp:
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:
stellt ein Linux - Shell auf Fenster , in denen einfache Linux - Befehle wie
ls
,cp
,find
usw. arbeiten ähnlichMINGW64
Sie können
cmd
undpowershell
direkt durch Eingabe voncmd
oder zugreifenpowershell
Die Unicode-Unterstützung ist schlecht. Die Codierung ist nicht korrekt. Wenn Sie beispielsweise versuchen, den
Python
Interpreter zu starten , stürzt er ab. Sie müssen die Codierung manuell über ( https://stackoverflow.com/a/12834315/4752883 ) ändernchcp 65001
set PYTHONIOENCONDING=utf-8
und anschließend die Python-Eingabeaufforderung startenDas Tolle an MobaSSH ist, dass es eine sehr einfache Benutzeroberfläche hat und
scp
undssh
und gut integriert sind. So wird für einfache Anwendungsfälle gearbeitetSo kopieren Sie Dateien von einem
Linux
Client auf einenWindows
Server, der ausgeführt wirdMobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Dies liegt daran, dassMobaSSH
diecygwin
Laufwerke auf die gleiche Weise wie diecygwin
Laufwerke zugeordnet sind.Verwenden Sie VMs von Microsoft mit OpenSSHv6.7, das unter https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ installiert wurde. OpenSSHv6.7 ist bereits installiert.
Es ist sehr fehlerhaft und Sie müssen es stark anpassen.
Befehlsabschluss funktioniert nicht
Wenn Sie den Cursor auf dem Terminal bewegen, bleiben Leerzeichen
Python funktioniert nicht
Spätere Versionen von OpenSSH haben sich möglicherweise verbessert. Weitere MS scheinen OpenSSH über https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ verfügbar zu machen.
Optional Features
quelle
Wenn Sie zufällig auf OSX sind ...
Als ich versuchte, es mit username @ local auszuführen: / file_directory ...
Ich habe folgende Fehlermeldung erhalten:
Lösung
Auf meinem Mac musste ich Folgendes tun, um lokal einzurichten
ssh
:Dieser lieferte dann den Benutzernamen @ IP-Adresse.
quelle
Ich hatte heute das gleiche Problem auf MAC.
Geben Sie den folgenden Befehl ein:
quelle