scp - Secure copy

Gestern haben wir gelernt, wie man mit dem ssh-Befehl und der Ausgabeumleitung auch Dateien zwischen Computern kopieren kann. Dafür gibt es aber eine einfachere Möglichkeit: "scp". scp ist so ähnlich wie cp:

cp kopiert halt nur auf einem einzigen Computer und kann keine Dateien zwischen Computern hin und her kopieren (mit der Ausnahme dass es die Möglichkeit gibt Laufwerke von anderen Computern so aussehen zu lassen, als wären sie Teil des eingenen Computers (z.B. mittels NFS). Wenn man das gemacht hat, kann man natürlich genauso mit cp kopieren, wie auf lokale Dateien..).

Um dieses Problem zu beheben hat man in den Anfangstagen von Unix das Programm "rcp" (für "remote copy") geschrieben. Rcp hatte aber zahlreiche Sicherheitsprobleme und hat auch die Dateien unverschlüsselt übers Netz übertragen. Die verbesserte Variante, die heute hauptsächlich im Einsatz ist, ist scp. das s steht hier für "secure". Der unsichere Vorgänger zu ssh war übrigens auch "rsh" (remote shell). Das wird aber praktisch nicht mehr verwendet.

scp erlaubt es so ähnlich wie cp zu kopieren, nur kann von/auf andere Computer kopiert werden. z.b:

scp blabla.txt maxmeier@irgendwo.at:public_html/blibli.txt

würde die Datei blabla.txt, die sich lokal in deinem aktüllen Verzeichnis befindet auf den Rechner "irgendwo.at" kopieren, und zwar ins Verzeichnis

/home/maxmeier/public_html/ unter dem namen "blibli.txt"

Vorausgesetzt das Verzeichnis public_html existiert im Homeverzeichniss von maxmeier und maxmeier hat dort Schreibrechte.

Die Adresse setzt sich also aus 3 Teilen zusammen:

username@hostname:pfadname

Das username@ kannst du, wie bei ssh, weglassen, wenn du auf beiden Seiten den gleichen Usernamen hast.

scp blabla.txt mond.at:.

Der : trennt Hostname und Pfadname. Hostname ist der Name des Computers auf den du hinkopieren willst. Pfadname ist der Name des Verzeichnisses oder der Datei, auf die du kopieren willst. Beginnt der Name nicht mit einem / so ist er relativ zum Homeverzeichniss des jeweiligen Users gemeint. Obiges Beispiel: würde also die Datei blabla.txt in dein Homeverzeichnis auf mond.at kopieren ( . steht immer für das aktülle Verzeichnis und das ist in diesem Fall dein Homeverzeichnis..)

Das kopieren geht natürlich auch in die andere Richtung:

scp maxmeier@irgendwo.at:/etc/apt/* /tmp

würde alle Dateien von "irgendwo.at" aus /etc/apt/ auf deinen Compi ins Verzeichniss /tmp kopieren.

um Verzeichnisse inklusive ihrer Unterverzeichnisse und aller Files (sozusagen "rekursiv") zu kopieren hat scp die Option -r (rekursiv)

scp -r urlaubsfotos a7711222@unet.univie.ac.at:fotos

würde alles unterhalb des Verzeichnisses "urlaubsfotos" vom lokalen Computer auf einen Studentenaccount der Uni ins Verzeichnis Fotos kopieren. (Das bei -r angelegt wird falls es noch nicht existiert).

Wenn du auf einem Windows Computer bist, gibts dort das freie Programm pscp, das zum putty gehört. Falls es nicht installiert ist, kannst du auf Google nach putty suchen und dann das Program pscp.exe ins Windows-Verzeichnis speichern...).

pscp funktioniert genau wie scp, nur halt für Windows. (d.h du musst es in der DOS-Eingabeaufforderung aufrufen)

Die im Zuge von "ssh" erklärten Sicherheitsrisiken gelten in gleicher Weise natürlich auch für scp.


EXERCISES:

Verwende den scp Befehl um Verzeichnisse und Dateien von verschiedenen Computern auf andere zu kopieren.

REFERENCES:

man scp
Putty Download