Secure Copy Protocol : qu’est-ce que le SCP ?

Les outils et les techniques permettant de transférer des données entre deux ordinateurs sont multiples. Pour les débutants et les utilisateurs moins expérimentés, il peut néanmoins être difficile de trouver la solution adéquate pour transférer des données dans la multitude de programmes client et de protocoles disponibles. Lorsque l’on souhaite transmettre des données sensibles en particulier, un simple transfert du point A au point B ne saurait suffire. Pour un tel transfert, il est impératif d’utiliser des méthodes offrant une sécurité suffisante.

L’une de ces méthodes est de transférer les données via le Secure Copy Protocol (SCP) qui a été conçu spécialement pour assurer un transfert sécurisé des informations numériques. Dans cet article, vous découvrirez ce que recouvre exactement ce protocole SCP et comment il fonctionne dans le détail.

Qu’est-ce que le protocole SCP ?

Le Secure Copy Protocol (SCP), souvent appelé simplement « Secure Copy », est un protocole pour les systèmes informatiques assurant un transfert sécurisé des données entre un ordinateur local (Local Host) et un ordinateur distant (Remote Host) ou encore entre deux ordinateurs distants. Il est basé sur la commande rcp (remote copy) qui fut publiée dès 1982 en tant qu’élément des commandes « Berkeley Remote » de l’Université de Californie (Berkeley). Ces commandes permettent de contrôler le transfert des données via une ligne de commande.

SCP prévoit aussi bien une procédure d’authentification entre les deux hôtes qu’un chiffrement du transfert. Ce protocole garantit donc non seulement la sécurité, mais aussi l’authenticité des données transférées. Pour ces deux mécanismes de protection, le protocole SCP a recours au SSH (Secure Shell) qui est également utilisé pour d’autres protocoles de transfert comme FTP (ou SFTP). Le port TCP prévu pour le transfert via SCP est le port standard SSH 22.

Secure Copy est multiplateforme : il existe des implémentations et des programmes pour tous les systèmes Windows, macOS et Linux courants ainsi que pour Android et iOS.

Comment fonctionne le transfert via le protocole SCP ?

Secure Copy présuppose une authentification des deux hôtes impliqués. Pour qu’un transfert via ce protocole puisse avoir lieu, il convient tout d’abord d’établir une connexion SSH entre le système local et le système cible distant. Pour ce faire, il est nécessaire d’utiliser les données d’accès SSH ou une clé autorisée pour l’authentification par clé publique.

Note

Si vous souhaitez utiliser SCP pour le transfert de fichiers entre deux PC distants, vous aurez besoin d’une connexion SSH entre le système local exécutant le client SCP et le PC distant qui fonctionnera dans ce cas comme un hôte cible.

Une fois la connexion SSH entre les deux hôtes établie, le client SCP lance un processus Secure Copy. Deux modes différents sont alors disponibles :

  • Mode « source » : une requête SCP en mode source lit les fichiers sur le système cible et les renvoie au client.
  • Mode « sink » : lorsque le mode sink est utilisé dans des requêtes effectuées via le protocole SCP côté client, cela indique au système distant qu’il s’agit de données entrantes devant être inscrites sur le système.

Généralement, les clients SCP utilisent l’indicateur -f (de l’anglais from « de ») pour déclencher le mode source. Pour déclencher le mode sink afin d’envoyer des données à l’hôte cible, on utilise en revanche l’indicateur -t (de l’anglais to « vers »).

Note

L’interaction entre Secure Copy et Secure Shell peut être perturbée par des messages de bienvenue potentiels faisant suite à la réussite de la connexion SSH. SCP n’est en effet pas préparé à recevoir des messages texte de ce type. Par conséquent, il les interprète comme des messages d’erreur et bloque le transfert.

Où et comment le SCP est-il utilisé (à travers un exemple) ?

Secure Copy est compatible nativement avec tous les systèmes d’exploitation courants et offre un excellent niveau de sécurité grâce à l’ajout de SSH. Combinant une authentification et un chiffrement, SCP est au même niveau que le très apprécié SFTP qui utilise lui aussi les mécanismes de protection de Secure Shell. Comme SCP supplante par ailleurs cette variante sécurisée du FTP en termes de vitesse de transfert, ce protocole constitue une alternative de choix lorsqu’il s’agit de transférer des fichiers de façon rapide et sécurisée sur un serveur Web ou lorsque des données sensibles doivent être partagées sur un réseau local (par exemple dans un réseau d’entreprise).

Note

En 2019, le National Institute of Standards and Technology américain a publié un rapport de sécurité officiel mettant en évidence des points faibles dans différentes applications SCP. Il s’agit en particulier d’un risque potentiel d’attaque de l’homme du milieu au cours du transfert SCP qui permettrait aux hackers d’écraser des fichiers dans le répertoire cible ou d’infiltrer des programmes malveillants. Putty PSCP, OpenSSH et WinSCP font notamment partie des clients concernés.

En dehors des clients mentionnés précédemment, que vous pouvez télécharger gratuitement depuis le Web, MacOS, Windows et Linux disposent également d’un client Secure Copy intégré par défaut et portant le nom de « scp ». Par conséquent, la solution la plus simple et la plus rapide pour effectuer un transfert de données via le protocole SCP est de passer par l’invite de commandes ou le terminal comme le montrent les deux exemples de saisie suivants :

scp fichier source test@host:répertoire/fichier cible

Cette commande copie le fichier source en question dans le répertoire indiqué sur l’hôte cible, l’utilisateur devant être connecté via SSH à l’aide du nom « test ». Si un fichier doit être transféré depuis un système tiers sur le participant SCP local, la commande ressemblerait à ce qui suit :

scp test@host:répertoire/fichier source fichier cible

Aperçu des principales commandes SCP

La syntaxe des commandes pour le contrôle du client SCP natif dans Windows et les autres systèmes d’exploitation apparaît nettement dans les exemples ci-dessus. Cependant, les deux exemples de code présentent uniquement un processus de copie sans les options supplémentaires proposées par l’outil SCP. Si l’on souhaite intégrer ces options à une commande, elles seront placées avant les données concernant les fichiers et les hôtes afin d’obtenir une syntaxe ressemblant à ce qui suit :

scp [option(s)] [fichier source] [utilisateur@host:répertoire/fichier cible]
scp [option(s)] [utilisateur@host:répertoire/fichier source] [fichier cible]

Les principales options permettant d’ajuster les requêtes Secure Copy avec scp sont résumées dans le tableau suivant :

Options scp Fonctions
-1 Donne l’instruction d’utiliser la version 1 du protocole SCP
-2 Donne l’instruction d’utiliser la version 2 du protocole SCP
-C Active la compression GZIP de la connexion chiffrée SSH
-B Ouvre la session sans demande de mot de passe
-l limit Définit une limite de bande passante pour le transfert de fichier (Ko/s)
-o ssh_option Permet la définition d’options SSH concrètes comme le chiffrement
-P port Spécifie le port sur le système distant via lequel la connexion sera effectuée
-p Conserve les métainformations du fichier original (telles que les durées de modification et d’accès)
-q Masque la barre de progression pendant le transfert
-r Copie l’ensemble du répertoire de façon récursive, c’est-à-dire en incluant tous les sous-répertoires
-S program Spécifie le programme devant être utilisé pour la connexion chiffrée (le programme doit comprendre les options SSH)