Les outils et les tech­niques per­met­tant de trans­fé­rer des données entre deux or­di­na­teurs sont multiples. Pour les débutants et les uti­li­sa­teurs moins ex­pé­ri­men­tés, il peut néanmoins être difficile de trouver la solution adéquate pour trans­fé­rer des données dans la multitude de pro­grammes client et de pro­to­coles dis­po­nibles. Lorsque l’on souhaite trans­mettre des données sensibles en par­ti­cu­lier, 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é suf­fi­sante.

L’une de ces méthodes est de trans­fé­rer les données via le Secure Copy Protocol (SCP) qui a été conçu spé­cia­le­ment pour assurer un transfert sécurisé des in­for­ma­tions nu­mé­riques. Dans cet article, vous dé­cou­vri­rez ce que recouvre exac­te­ment ce protocole SCP et comment il fonc­tionne dans le détail.

Qu’est-ce que le protocole SCP ?

Le Secure Copy Protocol (SCP), souvent appelé sim­ple­ment « Secure Copy », est un protocole pour les systèmes in­for­ma­tiques assurant un transfert sécurisé des données entre un or­di­na­teur local (Local Host) et un or­di­na­teur distant (Remote Host) ou encore entre deux or­di­na­teurs 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’Uni­ver­sité de Ca­li­for­nie (Berkeley). Ces commandes per­met­tent de contrôler le transfert des données via une ligne de commande.

SCP prévoit aussi bien une procédure d’au­then­ti­fi­ca­tion entre les deux hôtes qu’un chif­fre­ment du transfert. Ce protocole garantit donc non seulement la sécurité, mais aussi l’au­then­ti­cité des données trans­fé­rées. Pour ces deux mé­ca­nismes de pro­tec­tion, le protocole SCP a recours au SSH (Secure Shell) qui est également utilisé pour d’autres pro­to­coles 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 mul­ti­pla­te­forme : il existe des im­plé­men­ta­tions et des pro­grammes pour tous les systèmes Windows, macOS et Linux courants ainsi que pour Android et iOS.

Comment fonc­tionne le transfert via le protocole SCP ?

Secure Copy pré­sup­pose une au­then­ti­fi­ca­tion 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é­ces­saire d’utiliser les données d’accès SSH ou une clé autorisée pour l’au­then­ti­fi­ca­tion 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 fonc­tion­nera 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 dif­fé­rents sont alors dis­po­nibles :

  • 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 ef­fec­tué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é­ra­le­ment, les clients SCP utilisent l’in­di­ca­teur -f (de l’anglais from « de ») pour dé­clen­cher le mode source. Pour dé­clen­cher le mode sink afin d’envoyer des données à l’hôte cible, on utilise en revanche l’in­di­ca­teur -t (de l’anglais to « vers »).

Note

L’in­te­rac­tion entre Secure Copy et Secure Shell peut être perturbée par des messages de bienvenue po­ten­tiels 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 con­sé­quent, il les in­ter­prète comme des messages d’erreur et bloque le transfert.

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

Secure Copy est com­pa­tible na­ti­ve­ment avec tous les systèmes d’ex­ploi­ta­tion courants et offre un excellent niveau de sécurité grâce à l’ajout de SSH. Combinant une au­then­ti­fi­ca­tion et un chif­fre­ment, SCP est au même niveau que le très apprécié SFTP qui utilise lui aussi les mé­ca­nismes de pro­tec­tion 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 al­ter­na­tive de choix lorsqu’il s’agit de trans­fé­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’en­tre­prise).

Note

En 2019, le National Institute of Standards and Tech­no­logy américain a publié un rapport de sécurité officiel mettant en évidence des points faibles dans dif­fé­rentes ap­pli­ca­tions SCP. Il s’agit en par­ti­cu­lier d’un risque potentiel d’attaque de l’homme du milieu au cours du transfert SCP qui per­met­trait aux hackers d’écraser des fichiers dans le ré­per­toire cible ou d’infiltrer des pro­grammes mal­veil­lants. Putty PSCP, OpenSSH et WinSCP font notamment partie des clients concernés.

En dehors des clients men­tion­nés pré­cé­dem­ment, que vous pouvez té­lé­char­ger gra­tui­te­ment 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 con­sé­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é­per­toire indiqué sur l’hôte cible, l’uti­li­sa­teur devant être connecté via SSH à l’aide du nom « test ». Si un fichier doit être transféré depuis un système tiers sur le par­ti­ci­pant SCP local, la commande res­sem­ble­rait à ce qui suit :

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

Aperçu des prin­ci­pales commandes SCP

La syntaxe des commandes pour le contrôle du client SCP natif dans Windows et les autres systèmes d’ex­ploi­ta­tion apparaît nettement dans les exemples ci-dessus. Cependant, les deux exemples de code pré­sen­tent uni­que­ment un processus de copie sans les options sup­plé­men­taires proposées par l’outil SCP. Si l’on souhaite intégrer ces options à une commande, elles seront placées avant les données con­cer­nant les fichiers et les hôtes afin d’obtenir une syntaxe res­sem­blant à 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 prin­ci­pales options per­met­tant d’ajuster les requêtes Secure Copy avec scp sont résumées dans le tableau suivant :

Options scp Fonctions
-1 Donne l’ins­truc­tion d’utiliser la version 1 du protocole SCP
-2 Donne l’ins­truc­tion d’utiliser la version 2 du protocole SCP
-C Active la com­pres­sion 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é­fi­ni­tion d’options SSH concrètes comme le chif­fre­ment
-P port Spécifie le port sur le système distant via lequel la connexion sera effectuée
-p Conserve les mé­tain­for­ma­tions du fichier original (telles que les durées de mo­di­fi­ca­tion et d’accès)
-q Masque la barre de pro­gres­sion pendant le transfert
-r Copie l’ensemble du ré­per­toire de façon récursive, c’est-à-dire en incluant tous les sous-ré­per­toires
-S program Spécifie le programme devant être utilisé pour la connexion chiffrée (le programme doit com­prendre les options SSH)
Aller au menu principal