scp (Shell-Befehl): Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
K (hat "scp" nach "scp (Shell-Befehl)" verschoben)
(Verwendung)
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Der [[Shell-Befehl]] <b>scp</b> (secure copy) dient der mit [[SSH]] verschlüsselten Übermittlung von [[Datei]]en und [[Verzeichnis]]en zwischen zwei [[Rechner]] über ein [[Rechnernetz]] unter Verwendung des Netzwerkprotokolls [[SCP]]. Gegebenenfalls wird für jede zu kopierende Datei die Eingabe des [[Passwort]]s verlangt. Wird Public-Key-Authentication verwendet, entfällt dies.
+
Der [[Shell-Befehl]] <b>scp</b> (secure copy) dient der mit [[SSH]] verschlüsselten Übermittlung von [[Datei]]en und [[Verzeichnis]]en in einem [[Rechnernetz]]. Dabei wird für die Anmeldung und Verbindung die [[Secure Shell]] / SSH und für die [[Datenübertragung]] das [[Secure Copy Protocol]] / SCP genutzt. Auf dem entfernten Rechner wird ein SCP-Server aufgerufen; dieser ist normalerweise gleichzeitig auch das Client-Programm. Für die darunterliegende Secure Shell wird ein SSH-Server benötigt.
 +
 
 +
Normalerweise wird für jede zu kopierende Datei die Eingabe des [[Passwort]]s verlangt. Wird Public-Key-Authentication verwendet, entfällt dies.
  
 
== Verwendung ==
 
== Verwendung ==
Zeile 14: Zeile 16:
  
 
  $ <b>scp remote1:file1 remote2:</b>
 
  $ <b>scp remote1:file1 remote2:</b>
 +
 +
Kopieren der Datei "datei1" vom lokalen Rechner als Benutzer "root" ins Verzeichnis "/tmp" auf Rechner "remote2" (via Port 6666).
 +
 +
$ <b>scp -P 6666 datei1 root@remote2:/tmp</b>
  
 
Kopieren der Datei "/tmp/file.txt" auf dem entfernten Rechner "altdorf" ins aktuelle Verzeichnis.
 
Kopieren der Datei "/tmp/file.txt" auf dem entfernten Rechner "altdorf" ins aktuelle Verzeichnis.
Zeile 22: Zeile 28:
  
 
  $ <b>scp -r sisis@altdorf:/tmp .</b>
 
  $ <b>scp -r sisis@altdorf:/tmp .</b>
 +
 +
Kopieren der Datei "/etc/hosts" als Benutzer "xyz" auf dem entfernten Rechner "remotehost" ins aktuelle Verzeichnis auf dem lokalen Rechner.
 +
 +
$ <b>scp xyz@remotehost:/etc/hosts .</b>
 +
 +
Kopieren der Dateien "/etc/hosts" und "/tmp/test" als Benutzer "xyz" auf dem entfernten Rechner "remotehost" ins aktuelle Verzeichnis auf dem lokalen Rechner.
 +
 +
$ <b>scp xyz@remotehost:"/etc/hosts /tmp/test" .</b>
 +
 +
Kopieren der Datei "/etc/hosts" auf dem lokalen Rechner "localhost" als Benutzer "xyz" auf den Rechner "remotehost" ins Verzeichnis "/tmp".
 +
 +
$ <b>scp /etc/hosts xyz@remotehost:/tmp</b>
 +
 +
Kopieren der Dateien "/etc/hosts" und "/etc/hosts.deny" als Benutzer "xyz" auf dem entfernten Rechner "remotehost" ins aktuelle Verzeichnis auf dem lokalen Rechner.
 +
 +
$ <b>scp xyz@remotehost:/etc/hosts scp xyz@remotehost:/etc/hosts.deny .</b>
 +
 +
Kopieren der Datei "/tmp/test" und als Benutzer "xyz" auf dem entfernten Rechner "remotehost1" ins Verzeichnis "/tmp" als Benutzer "abc" des entfernten Rechners "remotehost2".
 +
 +
$ <b>scp xyz@remotehost1:/tmp/test abc@remotehost2:/tmp</b>
 +
 +
== FAQ ==
 +
 +
=== scp: ambiguous target ===
 +
 +
Die Fehlermeldung "scp: ambiguous target" erscheint beim Kopieren über scp, wenn der Dateipfad ein Leerzeichen enthält.
 +
 +
$ <b>scp /quelle root@192.168.1.1:/Pfad mit Leerzeichen/</b>
 +
 +
Normalerweise würde es funktionieren, wenn man diesen Pfad in Anführungszeichen setzen würde.
 +
 +
$ <b>scp /quelle root@192.168.1.1:"/Pfad mit Leerzeichen/"</b>
 +
 +
Die Fehlermeldung erscheint aber trotzdem!
 +
 +
Auch ein Backslash vor dem Leerzeichen hilft nichts.
 +
 +
$ <b>scp /quelle root@192.168.1.1:/Pfad\ mit\ Leerzeichen/</b>
 +
 +
In diesem Fall müssen erstens die Anführungszeichen gesetzt und zusätzlich die Leerzeichen noch mit einem doppelten (!) Backslash versehen werden.
 +
 +
$ <b>scp /quelle root@192.168.1.1:"/Pfad\\ mit\\ Leerzeichen/"</b>
  
 
== Weblinks ==
 
== Weblinks ==
  
{{dewi|Secure_Copy|Secure Copy}}
+
{{Weblinks}}
 +
{{url_dewikipedia|Secure_Copy|Secure Copy}}
 +
{{Fuss}}
 +
 
 +
* http://crawlicious.com/wp/2009/06/18/multi-hop-scp-ssh-scp-file-copy/
 +
* http://tek-tips.com/viewthread.cfm?qid=1555314
 +
 
 +
<!--
 +
server1 -> server3 -> server2
 +
 
 +
ssh server3 'ssh server2 "cat > destfile"' < srcfile
 +
 
 +
z. B. fuerst via adminkuhn.ch zu Detmold
 +
 
 +
$ ssh root@adminkuhn.ch 'ssh root@90.153.12.200 "cat > /tmp/ncdstart.exe"' < NCDSTART.EXE
 +
Permission denied, please try again.
 +
Permission denied, please try again.
 +
Received disconnect from 90.153.12.200: 2: Too many authentication failures for root
 +
 
 +
Folgendes FUNKTIONIERTE auf Rechner "fuerst" (host1 -> host2 -> host3):
 +
 
 +
$ ssh -L 9999:host3:22 root@host2
 +
 
 +
Dann in einem zweiten Fenster auf Rechner "fuerst":
 +
 
 +
$ scp -P 9999 inputfile root@localhost:/tmp/outputfile
  
 +
-->
  
{{cat|}}
+
{{cat|Datenübertragung}}
 +
{{cat|Secure Copy Protocol}}
 +
{{cat|Secure Shell}}
 +
{{cat|Shell-Befehl}}
 +
{{cat|UNFERTIG}}

Aktuelle Version vom 12. November 2016, 17:05 Uhr

Der Shell-Befehl scp (secure copy) dient der mit SSH verschlüsselten Übermittlung von Dateien und Verzeichnisen in einem Rechnernetz. Dabei wird für die Anmeldung und Verbindung die Secure Shell / SSH und für die Datenübertragung das Secure Copy Protocol / SCP genutzt. Auf dem entfernten Rechner wird ein SCP-Server aufgerufen; dieser ist normalerweise gleichzeitig auch das Client-Programm. Für die darunterliegende Secure Shell wird ein SSH-Server benötigt.

Normalerweise wird für jede zu kopierende Datei die Eingabe des Passworts verlangt. Wird Public-Key-Authentication verwendet, entfällt dies.

Verwendung

Kopieren der Datei "file" vom Rechner "remote" ins aktuelle Verzeichnis.

$ scp remote:file .

Kopieren der Datei "file1" vom Rechner "remote1" sowie der Datei "file2" vom Rechner "remote2" ins Verzeichnis "/tmp" auf dem lokalen Rechner.

$ scp remote1:file1 remote2:file2 /tmp

Kopieren der Datei "file1" vom Rechner "remote1" auf den Rechner "remote2".

$ scp remote1:file1 remote2:

Kopieren der Datei "datei1" vom lokalen Rechner als Benutzer "root" ins Verzeichnis "/tmp" auf Rechner "remote2" (via Port 6666).

$ scp -P 6666 datei1 root@remote2:/tmp

Kopieren der Datei "/tmp/file.txt" auf dem entfernten Rechner "altdorf" ins aktuelle Verzeichnis.

$ scp sisis@altdorf:/tmp/file.txt .

Rekursives Kopieren des Verzeichnisses "/tmp" (also einschliesslich aller seiner Dateien und Unterverzeichnisse) auf dem entfernten Rechner "altdorf" ins aktuelle Verzeichnis.

$ scp -r sisis@altdorf:/tmp .

Kopieren der Datei "/etc/hosts" als Benutzer "xyz" auf dem entfernten Rechner "remotehost" ins aktuelle Verzeichnis auf dem lokalen Rechner.

$ scp xyz@remotehost:/etc/hosts .

Kopieren der Dateien "/etc/hosts" und "/tmp/test" als Benutzer "xyz" auf dem entfernten Rechner "remotehost" ins aktuelle Verzeichnis auf dem lokalen Rechner.

$ scp xyz@remotehost:"/etc/hosts /tmp/test" .

Kopieren der Datei "/etc/hosts" auf dem lokalen Rechner "localhost" als Benutzer "xyz" auf den Rechner "remotehost" ins Verzeichnis "/tmp".

$ scp /etc/hosts xyz@remotehost:/tmp

Kopieren der Dateien "/etc/hosts" und "/etc/hosts.deny" als Benutzer "xyz" auf dem entfernten Rechner "remotehost" ins aktuelle Verzeichnis auf dem lokalen Rechner.

$ scp xyz@remotehost:/etc/hosts scp xyz@remotehost:/etc/hosts.deny .

Kopieren der Datei "/tmp/test" und als Benutzer "xyz" auf dem entfernten Rechner "remotehost1" ins Verzeichnis "/tmp" als Benutzer "abc" des entfernten Rechners "remotehost2".

$ scp xyz@remotehost1:/tmp/test abc@remotehost2:/tmp

FAQ

scp: ambiguous target

Die Fehlermeldung "scp: ambiguous target" erscheint beim Kopieren über scp, wenn der Dateipfad ein Leerzeichen enthält.

$ scp /quelle root@192.168.1.1:/Pfad mit Leerzeichen/

Normalerweise würde es funktionieren, wenn man diesen Pfad in Anführungszeichen setzen würde.

$ scp /quelle root@192.168.1.1:"/Pfad mit Leerzeichen/"

Die Fehlermeldung erscheint aber trotzdem!

Auch ein Backslash vor dem Leerzeichen hilft nichts.

$ scp /quelle root@192.168.1.1:/Pfad\ mit\ Leerzeichen/

In diesem Fall müssen erstens die Anführungszeichen gesetzt und zusätzlich die Leerzeichen noch mit einem doppelten (!) Backslash versehen werden.

$ scp /quelle root@192.168.1.1:"/Pfad\\ mit\\ Leerzeichen/"

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
country DE.gif Wikipedia ger Secure Copywbm Enzyklopädischer Artikel