Wer Daten zwischen zwei Computern über­tra­gen möchte, hat zu diesem Zweck diverse Werkzeuge und Techniken zur Verfügung. Bei der Vielzahl an Client-Pro­gram­men und aus­wähl­ba­ren Pro­to­kol­len ist es jedoch ins­be­son­de­re für Neulinge bzw. weniger erfahrene Nutzer schwierig, die passende Lösung für den geplanten Da­ten­trans­fer zu finden. Ins­be­son­de­re, wenn sensible Daten ver­schickt werden sollen, ist nämlich mehr als eine einfache Über­tra­gung von A nach B gefragt. Dafür kommen dann ei­gent­lich nur noch Methoden infrage, die ent­spre­chen­de Si­cher­heit bieten.

Eine dieser Methoden ist die Über­tra­gung der Daten über das Secure Copy Protocol (SCP), das speziell für den sicheren Transfer digitaler In­for­ma­tio­nen kon­zi­piert wurde. Was genau hinter dem SCP-Protokoll steckt und wie genau es funk­tio­niert, verrät der folgende Artikel.

Was ist SCP?

Secure Copy Protocol (SCP), häufig auch nur als Secure Copy be­zeich­net, ist ein Protokoll für Com­pu­ter­sys­te­me, das den sicheren Transfer von Daten zwischen einem lokalen (Local Host) und einem ent­fern­ten Rechner (Remote Host) oder al­ter­na­tiv zwischen zwei ent­fern­ten Rechnern ge­währ­leis­tet. Es basiert auf den rcp-Kommandos (remote copy), die bereits im Jahr 1982 als Be­stand­teil der „Berkeley r-Kommandos“ von der Uni­ver­si­ty of Ca­li­for­nia (Berkeley) ver­öf­fent­licht wurden. Sie er­mög­li­chen die Steuerung der Da­ten­über­tra­gung via Kom­man­do­zei­le.

SCP sieht sowohl ein Au­then­ti­fi­zie­rungs­ver­fah­ren zwischen den beiden Hosts als auch eine Ver­schlüs­se­lung der Über­tra­gung vor. So stellt das Protokoll nicht nur die Si­cher­heit, sondern auch die Au­then­ti­zi­tät der trans­fe­rier­ten Daten sicher. Für beide Schutz­me­cha­nis­men setzt das SCP-Protokoll auf SSH (Secure Shell), das auch bei al­ter­na­ti­ven Über­tra­gungs­pro­to­kol­len wie FTP (bzw. SFTP) zum Einsatz kommt. Der für den Transfer via SCP vor­ge­se­he­ne TCP-Port ist der SSH-Standard-Port 22.

Secure Copy ist platt­form­über­grei­fend: Es exis­tie­ren Im­ple­men­tie­run­gen und Programme für alle gängigen Windows-, macOS- und Linux-Systeme sowie für Android und iOS.

Wie funk­tio­niert die Über­tra­gung mit dem SCP-Protokoll?

Secure Copy setzt eine Au­then­ti­fi­zie­rung der beiden in­vol­vier­ten Hosts voraus. Bevor die Über­tra­gung über das Protokoll statt­fin­den kann, muss im ersten Schritt also zunächst eine SSH-Ver­bin­dung vom lokalen System zum ent­fern­ten Ziel­sys­tem aufgebaut werden. Hierfür benötigt man also wahlweise die SSH-Zu­gangs­da­ten oder einen au­to­ri­sier­ten Schlüssel für die Public-Key-Au­then­ti­fi­zie­rung.

Hinweis

Soll SCP für die Da­tei­über­tra­gung zwischen zwei Remote-PCs verwendet werden, ist eine SSH-Ver­bin­dung vom SCP-Client aus­füh­ren­den, lokalen System zu dem Remote-PC er­for­der­lich, der in diesem Fall als Quell-Host fungieren soll.

Sobald die SSH-Ver­bin­dung zwischen den beiden Hosts steht, startet der SCP-Client einen Secure-Copy-Prozess, wobei zwei ver­schie­de­ne Modi zur Verfügung stehen:

  • Source-Modus: Eine SCP-Anfrage im Source-Modus liest Dateien auf dem Ziel­sys­tem und sendet diese zurück an den Client.
     
  • Sink-Modus: Wird in Anfragen via SCP-Protokoll auf Client-Seiten der Sink-Modus verwendet, si­gna­li­siert dies dem Remote-System, dass es sich um ein­ge­hen­de Daten handelt, die auf das System ge­schrie­ben werden sollen.

Ty­pi­scher­wei­se nutzen SCP-Clients den Indikator -f (für engl. from „von“), um den Source-Modus aus­zu­lö­sen. Soll der Sink-Modus initiiert werden, um Daten an den Ziel-Host zu schicken, kommt statt­des­sen der Indikator -t (für engl. to „nach“) zum Einsatz.

Hinweis

Die In­ter­ak­ti­on zwischen Secure Copy und Secure Shell kann durch etwaige Will­kom­mens­nach­rich­ten infolge der er­folg­rei­chen SSH-Anmeldung gestört werden. SCP ist auf derartige Text-Mit­tei­lun­gen nicht vor­be­rei­tet und in­ter­pre­tiert sie als Feh­ler­mel­dung und blockiert die Über­tra­gung in­fol­ge­des­sen.

Wo und wie kommt SCP zum Einsatz (inkl. Beispiel)?

Secure Copy wird von allen gängigen Be­triebs­sys­te­men nativ un­ter­stützt und bietet durch die Hin­zu­nah­me von SSH ein her­vor­ra­gen­des Si­cher­heits­pa­ket. Dank der Kom­bi­na­ti­on aus Au­then­ti­fi­zie­rung und Ver­schlüs­se­lung steht es auf einer Stufe mit dem beliebten SFTP, das sich ebenfalls die Schutz­me­cha­nis­men der Secure Shell zunutze macht. Da SCP die ab­ge­si­cher­te FTP-Variante zudem in Sachen Über­tra­gungs­ge­schwin­dig­keit aussticht, ist das Protokoll eine erst­klas­si­ge Al­ter­na­ti­ve, wenn Dateien sicher und schnell auf einen Webserver über­tra­gen oder sensible Daten in einem lokalen Netzwerk (z. B. in einem Un­ter­neh­mens­netz) verteilt werden sollen.

Hinweis

2019 hat das US-ame­ri­ka­ni­sche National Institute of Standards and Tech­no­lo­gy einen of­fi­zi­el­len Si­cher­heits­be­richt ver­öf­fent­licht, der Schwach­stel­len in ver­schie­de­nen SCP-An­wen­dun­gen aufdeckt. Hierbei geht es ins­be­son­de­re um das po­ten­zi­el­le Risiko eines Man-in-the-Middle-Angriffs im Rahmen der SCP-Über­tra­gung, der es An­grei­fern er­mög­licht, Dateien im Ziel­ver­zeich­nis zu über­schrei­ben oder Malware ein­zu­schleu­sen. Zu den be­trof­fe­nen Clients gehören unter anderem Putty PSCP, OpenSSH und WinSCP.

Neben den zuvor genannten Clients, die Sie kos­ten­frei aus dem Web her­un­ter­la­den und nutzen können, verfügen MacOS, Windows und Linux auch über einen stan­dard­mä­ßig ein­ge­bau­ten Secure-Copy-Client mit dem Namen „scp“. Der Weg über die Ein­ga­be­auf­for­de­rung bzw. das Terminal ist folglich die schnells­te und ein­fachs­te Lösung für einen Da­ten­trans­fer via SCP-Protokoll wie die beiden folgenden Beispiel-Eingaben ver­deut­li­chen:

scp Quelldatei test@host:Verzeichnis/Zieldatei

Mit diesem Befehl wird die jeweilige Quell­da­tei in das an­ge­ge­be­ne Ver­zeich­nis auf dem Ziel-Host kopiert, wobei der Benutzer mit dem Namen „test“ via SSH ein­ge­loggt sein muss. Soll eine Datei von einem fremden System auf den lokalen SCP-Teil­neh­mer trans­fe­riert werden, sähe der Befehl fol­gen­der­ma­ßen aus:

scp test@host:Verzeichnis/Quelldatei Zieldatei

Die wich­tigs­ten SCP-Kommandos im Überblick

Die grund­le­gen­de Syntax der Kom­man­do­zei­len-Befehle für die Steuerung des nativen SCP-Clients in Windows und Co. ist in den vor­an­ste­hen­den Bei­spie­len bereits deutlich geworden. Al­ler­dings zeigen beide Code-Beispiele nur einen einfachen Ko­pier­vor­gang ohne zu­sätz­li­che Optionen, die das Tool scp aber durchaus zu bieten hat. Sollen diese Optionen Be­stand­teil eines Befehls sein, werden sie den Angaben zu Dateien und Hosts vor­an­ge­stellt, sodass das voll­stän­di­ge syn­tak­ti­sche Gerüst wie folgt aussieht:

scp [Option(en)] [Quelldatei] [Nutzer@host:Verzeichnis/Zieldatei]
scp [Option(en)] [Nutzer@host:Verzeichnis/Quelldatei] [Zieldatei]

Die wich­tigs­ten Optionen zur Anpassung der Secure-Copy-Abfragen mit scp fasst nach­fol­gen­de Tabelle ab­schlie­ßend zusammen:

scp-Option Funktion
-1 Gibt die Anweisung, Version 1 des SCP-Pro­to­kolls zu verwenden
-2 Gibt die Anweisung, Version 2 des SCP-Pro­to­kolls zu verwenden
-C Aktiviert die GZIP-Kom­pri­mie­rung der ver­schlüs­sel­ten SSH-Ver­bin­dung
-B Initiiert die Sitzung ohne Passwort-Abfrage
-l limit Legt ein Band­brei­ten­li­mit für die Da­tei­über­tra­gung fest (Kb/s)
-o ssh_option Er­mög­licht die De­fi­ni­ti­on konkreter SSH-Optionen wie Ver­schlüs­se­lung
-P port Spe­zi­fi­ziert den Port auf Seiten des Remote-Systems, über den die Ver­bin­dung laufen soll
-p Bewahrt Me­ta­in­for­ma­tio­nen der Ori­gi­nal­da­tei bei (wie Änderungs- und Zu­griffs­zei­ten)
-q Blendet die Fort­schritts­an­zei­ge während der Über­tra­gung aus
-r Kopiert das gesamte Ver­zeich­nis rekursiv, also inkl. aller Un­ter­ver­zeich­nis­se
-S program Spe­zi­fi­ziert das Programm, das für die ver­schlüs­sel­te Ver­bin­dung verwendet werden soll (das Programm muss SSH-Optionen verstehen)
Zum Hauptmenü