SCP (Secure Copy Protocol): Was ist SCP?
Wer Daten zwischen zwei Computern übertragen möchte, hat zu diesem Zweck diverse Werkzeuge und Techniken zur Verfügung. Bei der Vielzahl an Client-Programmen und auswählbaren Protokollen ist es jedoch insbesondere für Neulinge bzw. weniger erfahrene Nutzer schwierig, die passende Lösung für den geplanten Datentransfer zu finden. Insbesondere, wenn sensible Daten verschickt werden sollen, ist nämlich mehr als eine einfache Übertragung von A nach B gefragt. Dafür kommen dann eigentlich nur noch Methoden infrage, die entsprechende Sicherheit bieten.
Eine dieser Methoden ist die Übertragung der Daten über das Secure Copy Protocol (SCP), das speziell für den sicheren Transfer digitaler Informationen konzipiert wurde. Was genau hinter dem SCP-Protokoll steckt und wie genau es funktioniert, verrät der folgende Artikel.
Was ist SCP?
Secure Copy Protocol (SCP), häufig auch nur als Secure Copy bezeichnet, ist ein Protokoll für Computersysteme, das den sicheren Transfer von Daten zwischen einem lokalen (Local Host) und einem entfernten Rechner (Remote Host) oder alternativ zwischen zwei entfernten Rechnern gewährleistet. Es basiert auf den rcp-Kommandos (remote copy), die bereits im Jahr 1982 als Bestandteil der „Berkeley r-Kommandos“ von der University of California (Berkeley) veröffentlicht wurden. Sie ermöglichen die Steuerung der Datenübertragung via Kommandozeile.
SCP sieht sowohl ein Authentifizierungsverfahren zwischen den beiden Hosts als auch eine Verschlüsselung der Übertragung vor. So stellt das Protokoll nicht nur die Sicherheit, sondern auch die Authentizität der transferierten Daten sicher. Für beide Schutzmechanismen setzt das SCP-Protokoll auf SSH (Secure Shell), das auch bei alternativen Übertragungsprotokollen wie FTP (bzw. SFTP) zum Einsatz kommt. Der für den Transfer via SCP vorgesehene TCP-Port ist der SSH-Standard-Port 22.
Secure Copy ist plattformübergreifend: Es existieren Implementierungen und Programme für alle gängigen Windows-, macOS- und Linux-Systeme sowie für Android und iOS.
Wie funktioniert die Übertragung mit dem SCP-Protokoll?
Secure Copy setzt eine Authentifizierung der beiden involvierten Hosts voraus. Bevor die Übertragung über das Protokoll stattfinden kann, muss im ersten Schritt also zunächst eine SSH-Verbindung vom lokalen System zum entfernten Zielsystem aufgebaut werden. Hierfür benötigt man also wahlweise die SSH-Zugangsdaten oder einen autorisierten Schlüssel für die Public-Key-Authentifizierung.
Soll SCP für die Dateiübertragung zwischen zwei Remote-PCs verwendet werden, ist eine SSH-Verbindung vom SCP-Client ausführenden, lokalen System zu dem Remote-PC erforderlich, der in diesem Fall als Quell-Host fungieren soll.
Sobald die SSH-Verbindung zwischen den beiden Hosts steht, startet der SCP-Client einen Secure-Copy-Prozess, wobei zwei verschiedene Modi zur Verfügung stehen:
- Source-Modus: Eine SCP-Anfrage im Source-Modus liest Dateien auf dem Zielsystem und sendet diese zurück an den Client.
- Sink-Modus: Wird in Anfragen via SCP-Protokoll auf Client-Seiten der Sink-Modus verwendet, signalisiert dies dem Remote-System, dass es sich um eingehende Daten handelt, die auf das System geschrieben werden sollen.
Typischerweise nutzen SCP-Clients den Indikator -f (für engl. from „von“), um den Source-Modus auszulösen. Soll der Sink-Modus initiiert werden, um Daten an den Ziel-Host zu schicken, kommt stattdessen der Indikator -t (für engl. to „nach“) zum Einsatz.
Die Interaktion zwischen Secure Copy und Secure Shell kann durch etwaige Willkommensnachrichten infolge der erfolgreichen SSH-Anmeldung gestört werden. SCP ist auf derartige Text-Mitteilungen nicht vorbereitet und interpretiert sie als Fehlermeldung und blockiert die Übertragung infolgedessen.
Wo und wie kommt SCP zum Einsatz (inkl. Beispiel)?
Secure Copy wird von allen gängigen Betriebssystemen nativ unterstützt und bietet durch die Hinzunahme von SSH ein hervorragendes Sicherheitspaket. Dank der Kombination aus Authentifizierung und Verschlüsselung steht es auf einer Stufe mit dem beliebten SFTP, das sich ebenfalls die Schutzmechanismen der Secure Shell zunutze macht. Da SCP die abgesicherte FTP-Variante zudem in Sachen Übertragungsgeschwindigkeit aussticht, ist das Protokoll eine erstklassige Alternative, wenn Dateien sicher und schnell auf einen Webserver übertragen oder sensible Daten in einem lokalen Netzwerk (z. B. in einem Unternehmensnetz) verteilt werden sollen.
2019 hat das US-amerikanische National Institute of Standards and Technology einen offiziellen Sicherheitsbericht veröffentlicht, der Schwachstellen in verschiedenen SCP-Anwendungen aufdeckt. Hierbei geht es insbesondere um das potenzielle Risiko eines Man-in-the-Middle-Angriffs im Rahmen der SCP-Übertragung, der es Angreifern ermöglicht, Dateien im Zielverzeichnis zu überschreiben oder Malware einzuschleusen. Zu den betroffenen Clients gehören unter anderem Putty PSCP, OpenSSH und WinSCP.
Neben den zuvor genannten Clients, die Sie kostenfrei aus dem Web herunterladen und nutzen können, verfügen MacOS, Windows und Linux auch über einen standardmäßig eingebauten Secure-Copy-Client mit dem Namen „scp“. Der Weg über die Eingabeaufforderung bzw. das Terminal ist folglich die schnellste und einfachste Lösung für einen Datentransfer via SCP-Protokoll wie die beiden folgenden Beispiel-Eingaben verdeutlichen:
scp Quelldatei test@host:Verzeichnis/Zieldatei
Mit diesem Befehl wird die jeweilige Quelldatei in das angegebene Verzeichnis auf dem Ziel-Host kopiert, wobei der Benutzer mit dem Namen „test“ via SSH eingeloggt sein muss. Soll eine Datei von einem fremden System auf den lokalen SCP-Teilnehmer transferiert werden, sähe der Befehl folgendermaßen aus:
scp test@host:Verzeichnis/Quelldatei Zieldatei
Die wichtigsten SCP-Kommandos im Überblick
Die grundlegende Syntax der Kommandozeilen-Befehle für die Steuerung des nativen SCP-Clients in Windows und Co. ist in den voranstehenden Beispielen bereits deutlich geworden. Allerdings zeigen beide Code-Beispiele nur einen einfachen Kopiervorgang ohne zusätzliche Optionen, die das Tool scp aber durchaus zu bieten hat. Sollen diese Optionen Bestandteil eines Befehls sein, werden sie den Angaben zu Dateien und Hosts vorangestellt, sodass das vollständige syntaktische Gerüst wie folgt aussieht:
scp [Option(en)] [Quelldatei] [Nutzer@host:Verzeichnis/Zieldatei]
scp [Option(en)] [Nutzer@host:Verzeichnis/Quelldatei] [Zieldatei]
Die wichtigsten Optionen zur Anpassung der Secure-Copy-Abfragen mit scp fasst nachfolgende Tabelle abschließend zusammen:
scp-Option | Funktion |
---|---|
-1 | Gibt die Anweisung, Version 1 des SCP-Protokolls zu verwenden |
-2 | Gibt die Anweisung, Version 2 des SCP-Protokolls zu verwenden |
-C | Aktiviert die GZIP-Komprimierung der verschlüsselten SSH-Verbindung |
-B | Initiiert die Sitzung ohne Passwort-Abfrage |
-l limit | Legt ein Bandbreitenlimit für die Dateiübertragung fest (Kb/s) |
-o ssh_option | Ermöglicht die Definition konkreter SSH-Optionen wie Verschlüsselung |
-P port | Spezifiziert den Port auf Seiten des Remote-Systems, über den die Verbindung laufen soll |
-p | Bewahrt Metainformationen der Originaldatei bei (wie Änderungs- und Zugriffszeiten) |
-q | Blendet die Fortschrittsanzeige während der Übertragung aus |
-r | Kopiert das gesamte Verzeichnis rekursiv, also inkl. aller Unterverzeichnisse |
-S program | Spezifiziert das Programm, das für die verschlüsselte Verbindung verwendet werden soll (das Programm muss SSH-Optionen verstehen) |