Das Secure Copy Protocol ( SCP ) ist ein Verfahren zur sicheren Übertragung von Computerdateien zwischen einem lokalen und einem entfernten Rechner oder zwischen zwei entfernten Rechnern. Es basiert auf dem Secure Shell (SSH)-Protokoll. [ 1 ] „SCP“ bezeichnet üblicherweise sowohl das Secure Copy Protocol als auch das Programm selbst. [ 2 ]

Laut den OpenSSH -Entwicklern vom April 2019 ist SCP veraltet, unflexibel und nicht ohne Weiteres zu reparieren; sie empfehlen daher die Verwendung modernerer Protokolle wie SFTP und rsync für die Dateiübertragung. [ 3 ] Ab OpenSSH Version 9.0 scpverwendet der Client daher standardmäßig SFTP für Dateiübertragungen anstelle des älteren SCP/RCP-Protokolls. [ 4 ]

Sicheres Kopierprotokoll

SCP ist ein Netzwerkprotokoll , das auf dem BSD -RCP -Protokoll basiert [ 5 ] und den Dateiaustausch zwischen Hosts in einem Netzwerk unterstützt. SCP verwendet Secure Shell (SSH) für die Datenübertragung und dieselben Authentifizierungsmechanismen, um die Authentizität und Vertraulichkeit der übertragenen Daten zu gewährleisten . Ein Client kann Dateien an einen Server senden (hochladen) und optional deren grundlegende Attribute (Berechtigungen, Zeitstempel) hinzufügen. Clients können außerdem Dateien oder Verzeichnisse von einem Server anfordern (herunterladen). SCP läuft standardmäßig über TCP-Port 22 [ 6 ] . Wie bei RCP gibt es auch für SCP keine RFC , die die Details des Protokolls definiert.

Funktion

Normalerweise initiiert ein Client eine SSH-Verbindung zum Remote-Host und fordert den Start eines SCP-Prozesses auf dem Remote-Server an. Der Remote-SCP-Prozess kann in einem von zwei Modi ausgeführt werden:

  • Quellmodus, der Dateien (normalerweise von der Festplatte) liest und an den Client zurücksendet, oder
  • Der Sink-Modus empfängt die vom Client gesendeten Dateien und schreibt sie (üblicherweise auf die Festplatte) auf den Remote-Host.

Bei den meisten SCP-Clients wird der Quellmodus üblicherweise mit dem -fFlag `from` und der Senkenmodus mit dem -tFlag `to` aktiviert. [ 2 ] Diese Flags werden intern verwendet und sind außerhalb des SCP-Quellcodes nicht dokumentiert.

Fernbedienungsmodus

Früher öffnete der SCP-Client bei sicheren Remote-zu-Remote-Kopien eine SSH-Verbindung zum Quellhost und forderte diesen auf, seinerseits eine SCP-Verbindung zum Zielhost herzustellen. (Der Remote-zu-Remote-Modus unterstützte nicht das Öffnen zweier SCP-Verbindungen und die Verwendung des Ursprungsclients als Vermittler.) Daher konnte SCP nicht zum Remote-Kopieren von der Quelle zum Ziel verwendet werden, wenn die Authentifizierung per Passwort oder Tastaturinteraktion erfolgte, da dies die Anmeldeinformationen des Zielservers dem Quellhost offengelegt hätte. Mit schlüsselbasierten oder GSSAPI- Methoden, die keine Benutzereingabe erfordern, war dies jedoch möglich. [ 2 ]

Seit Kurzem unterstützt der Remote-zu-Remote-Modus das Routing des Datenverkehrs über den Client, der die Übertragung initiiert hat, obwohl dieser ein Dritter ist. Dadurch müssen die Autorisierungsdaten nur auf dem initiierenden Client, dem Dritten, vorhanden sein. [ 7 ]

Probleme bei der Verwendung von gesprächigen Shell-Profilen

SCP erwartet keine Textkommunikation mit der SSH-Login-Shell. Text, der aufgrund des SSH-Profils übertragen wird (z. B. echo "Welcome"in der .bashrcDatei), wird als Fehlermeldung interpretiert, und eine leere Zeile ( echo "") führt dazu, dass der SCP-Client in eine Endlosschleife gerät und auf die vollständige Übermittlung der Fehlermeldung wartet. [ 2 ]

SCP-Programm

Das SCP-Programm [ 8 ] ist ein Softwaretool, das das SCP-Protokoll als Dienst (Daemon) oder Client implementiert. Es dient dem sicheren Kopieren.

Das wohl am weitesten verbreitete SCP-Programm ist das OpenSSH -Befehlszeilenprogrammscp , das in den meisten SSH-Implementierungen enthalten ist. scpEs stellt das sichere Pendant zum rcpBefehl dar. Das scpProgramm muss Bestandteil aller SSH-Server sein, die SCP-Dienste anbieten möchten, da es selbst scpauch als SCP-Server fungiert. Seit OpenSSH 9.0 verwendet das Programm das neuere und sicherere SFTP- Protokoll; zudem wurde eine -OOption zur Verwendung von SCP mit älteren, reinen SCP-Servern hinzugefügt. [ 4 ]

Syntax

Typischerweise ist die Syntax des scpProgramms [ 9 ] wie die Syntax von cp(Kopie) :

Kopieren einer lokalen Datei auf einen Remote-Host:

scp LocalSourceFile user @ remotehost : directory / TargetFile

Datei vom Remote-Host kopieren und Ordner (mit -rSchalter) rekursiv vom Remote-Host kopieren:

scp Benutzer @ Remotehost : Verzeichnis / QuelldateiLokaleZieldatei scp -r Benutzer @ Host : Verzeichnis / QuellordnerLokalerZielordner​

Beachten Sie, dass der Port des Remote-Hosts, falls er einen anderen als den Standardport 22 verwendet, im Befehl angegeben werden kann. Beispiel: Kopieren einer Datei vom Host:

scp -P 2222 Benutzer @ Host : Verzeichnis / Quelldatei Zieldatei

Andere Kunden

Da das Secure Copy Protocol (SCP) ausschließlich Dateiübertragungen ermöglicht, sind GUI- SCP-Clients selten, da die Implementierung zusätzliche Funktionen erfordert ( mindestens die Verzeichnisauflistung ). WinSCP verwendet beispielsweise standardmäßig das SFTP-Protokoll. [ 10 ] Selbst im SCP-Modus sind Clients wie WinSCP in der Regel keine reinen SCP-Clients, da sie andere Mittel zur Implementierung der zusätzlichen Funktionen benötigen (z. B. den lsBefehl `sfcp` ). [ 11 ] Dies führt wiederum zu Plattformabhängigkeiten.

Umfassendere Werkzeuge zur Dateiverwaltung über SSH sind SFTP- Clients.

Sicherheit

Im Jahr 2019 wurde die Sicherheitslücke CVE - 2019-6111 [ 12 ] im Zusammenhang mit dem OpenSSH SCP-Tool und -Protokoll bekannt gegeben, die es Benutzern ermöglicht, beliebige Dateien im Zielverzeichnis des SCP-Clients zu überschreiben.

Siehe auch

Referenzen

  1. ^ „Linux- und Unix-scp-Befehl“ . Computer Hope . Abgerufen am 4. August 2015 .
  2. ^ a b c d Pechanec, Jan. „ Wie das SCP-Protokoll funktioniert“ . Jan Pechanecs Weblog . Oracle. Archiviert vom Original am 15.02.2017 . Abgerufen am 04.08.2015 .
  3. ^ „OpenSSH 8.0“ . OpenSSH-Versionshinweise . 17. April 2019.
  4. ^ a b "OpenSSH 9.0" . OpenSSH-Versionshinweise . 8. April 2022.
  5. ^ "scp(1) - OpenBSD manual pages (history section)" . Abgerufen am 25. Juni 2012 .
  6. ^ „SCP – Secure Copy Protocol – Was ist das? Vollständige Definition und Beispielbefehle!“ PC- und Netzwerk-Downloads – PCWDLD.com . 29.06.2019 . Abgerufen am 22.05.2020 .
  7. ^ Carroll, Brandon (16. August 2017). „So verwenden Sie Secure Copy für die Dateiübertragung“ . TechRepublic . Abgerufen am 22. Mai 2020 .
  8. ^ „Portable OpenSSH“ . GitHub . 13. Mai 2022.
  9. ^ "scp(1) - OpenBSD-Handbuchseiten" https://man.openbsd.org/scp
  10. ^ „Unterstützte Dateitransferprotokolle :: WinSCP“ . winscp.net . Abgerufen am 22.05.2020 .
  11. ^ „Die SCP/Shell-Seite (Dialogfeld „Erweiterte Websiteeinstellungen“) :: WinSCP“ . winscp.net . Abgerufen am 22.05.2020 .
  12. ^ "NVD - Cve-2019-6111" .