2023-03-07 07:07 Temps de lecture : 15 min

Comment utiliser la commande scp pour transférer des fichiers en toute sécurité sous Linux

Transfert sécurisé de fichiers avec la commande scp sous Linux

Imaginez que vous ayez besoin de déplacer des fichiers entre différents serveurs sous un système Linux. Plusieurs méthodes existent pour accomplir cette tâche, mais si la sécurité est votre priorité, vos options se réduisent. La solution la plus simple est l'utilisation de la commande scp, ou "secure copy", qui assure un transfert de fichiers sécurisé. Cet article vous guidera à travers l'utilisation du transfert sécurisé de fichiers grâce à la commande scp sur votre système Linux.

Qu'est-ce que la commande scp sous Linux?

La commande scp se révèle particulièrement utile pour transférer des fichiers au sein d'un réseau protégé. Elle signifie Secure Copy Protocol et permet de transférer des fichiers et des dossiers entre deux systèmes via une connexion SSH (Secure Shell). La connexion SSH assure que vos données sont chiffrées par défaut, garantissant la sécurité de vos transferts. En termes simples, la commande scp est une version sécurisée de la commande cp, que vous pouvez retrouver dans notre article sur les commandes du terminal Linux.

Syntaxe et options de la commande scp

Avant de pouvoir transférer des fichiers via scp, familiarisons-nous avec sa syntaxe et ses options:

scp <utilisateur_source>@<adresse_ip_source>:<chemin/vers/fichier_source> <utilisateur_cible>@<adresse_ip_cible>:<chemin/cible>

Décryptons cette syntaxe:

  • <utilisateur_source>@<adresse_ip_source>:<chemin/vers/fichier_source> désigne le système "source" d'où vous allez transférer vos fichiers ou dossiers.
  • <utilisateur_cible>@<adresse_ip_cible>:<chemin/cible> identifie le système "cible" vers lequel les fichiers ou dossiers seront transférés.

Si vous omettez l'un de ces paramètres, la commande scp sur Linux recherchera le fichier localement et le copiera localement. Voici quelques options que vous pouvez associer à la commande:

-P <port> Indique le port de connexion au système hôte. Par défaut, le port 22 est utilisé.
-p Conserve les informations de modification, d'accès et les modes du fichier source lors de sa copie sur le système cible.
-r Copie de manière récursive l'ensemble d'un répertoire vers le système cible.
-J <utilisateur>@<adresse_ip_proxy> Permet de se connecter aux systèmes source et de destination via un serveur proxy (hôte de saut).
-3 Copie simultanément les fichiers vers le système cible et le système local.
-4 Force la commande scp à utiliser exclusivement les adresses IPv4.
-6 Force la commande scp à utiliser exclusivement les adresses IPv6.

Comment copier des fichiers en utilisant la commande scp

Avant de pouvoir utiliser la commande scp sur Linux, il est nécessaire de remplir certaines conditions préalables sur les systèmes hôtes source et cible :

  • SSH doit être installé
  • Vous devez disposer d'un accès root ou d'un compte utilisateur avec les privilèges sudo.

Copier des fichiers de l'hôte local vers la cible distante

Pour transférer un fichier de votre système local vers une cible distante, utilisez la syntaxe suivante :

scp <options> <chemin_vers_fichier_local> <utilisateur_distant>@<adresse_ip_distante>:

Pour mieux comprendre, voici un exemple :

scp test.txt [email protected]:/home/remote2/Documents/

Dans cet exemple:

  • test.txt est le nom du fichier à transférer, situé dans le répertoire courant du système local.
  • test est le nom d'utilisateur sur le système cible.
  • 139.144.11.105 est l'adresse IP du système cible.
  • /home/remote2/Documents/ est l'emplacement sur le système cible où le fichier transféré sera enregistré.

Copier des fichiers de l'hôte distant vers la cible locale

Pour transférer un fichier d'un hôte distant vers votre ordinateur local, utilisez cette syntaxe de la commande scp :

scp <options> <utilisateur_distant>@<adresse_ip_distante>: <chemin_de_stockage_local>

Par exemple, pour transférer un fichier nommé test.py depuis un serveur distant, utilisez la commande:

scp [email protected]:/home/test/test1.py ~/test1.py

Dans cet exemple:

  • test est le nom d'utilisateur de l'hôte distant.
  • 10.10.11.113 est l'adresse IP de l'hôte distant.
  • /home/test/test1.py est le chemin du fichier à transférer depuis l'hôte distant.
  • ~/test1.py est le nom du fichier après son transfert sur la machine locale et son emplacement dans votre répertoire personnel.

Transférer des fichiers d'un hôte distant à un autre

Avec scp, il est possible de transférer des fichiers non seulement entre votre système local et une machine distante, mais également entre deux systèmes distants. Toutefois, il est conseillé de générer une paire de clés SSH (privée et publique) sur le système source, et de copier la clé publique sur le système de destination.

L'erreur "Échec de la vérification de la clé de l'hôte" est fréquente lors du transfert de fichiers entre deux systèmes distants. Pour éviter cette erreur, une clé SSH est recommandée. Voici la procédure pour cela :

1. Générer une paire de clés publique/privée sur le serveur source avec la commande:

ssh-keygen -t <algorithme_de_chiffrement>

2. Pour l'algorithme de chiffrement, utilisez rsa, le plus couramment utilisé, ou tout autre algorithme de votre choix.

3. Il vous sera demandé de choisir l'emplacement de stockage de la clé SSH, que vous pouvez personnaliser ou laisser à l'emplacement par défaut.

4. Vous pouvez choisir une phrase de passe ou la laisser vide en appuyant sur Entrée.

5. Copiez la clé publique sur le serveur de destination en utilisant la commande suivante. Cela vous permettra de vous connecter au système de destination sans mot de passe via SSH.

ssh-copy-id <utilisateur_cible>@<adresse_ip_cible>

Remarque : la connexion sans mot de passe n'est valide que pour l'utilisateur pour lequel la clé SSH a été générée.

6. Une fois la clé SSH créée et stockée sur le serveur distant, utilisez cette syntaxe scp pour échanger des fichiers entre deux systèmes distants Linux :

scp <options> <utilisateur_source>@<adresse_ip_source>: <utilisateur_cible>@<adresse_ip_cible>:

Par exemple, pour transférer un fichier test.txt d'un hôte distant à un autre, utilisez la commande:

scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

Dans cet exemple:

  • remote1 est le nom d'utilisateur sur l'hôte expéditeur distant.
  • 10.10.11.113 est l'adresse IP de l'hôte expéditeur distant.
  • /home/test1/test.txt est le chemin vers le fichier à envoyer.
  • remote2 est le nom d'utilisateur sur la cible du récepteur distant.
  • 10.11.27.111 est l'adresse IP de la cible du récepteur distant.
  • /home/remote2/Documents/test1.txt est le chemin et le nom pour enregistrer le fichier à recevoir.

Transférer plusieurs fichiers avec la commande scp

Transférer plusieurs fichiers un par un peut être fastidieux. La syntaxe suivante permet d'échanger plusieurs fichiers en une seule commande :

scp <chemin_du_fichier_1> <chemin_du_fichier_2> ... <utilisateur_récepteur>@<adresse_ip_cible>:

Par exemple, pour envoyer test1.txt, test2.py, test3.sh et test4.c, vous pouvez utiliser la commande:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Documents

Cette commande:

  • -P 2222 spécifie la connexion via le port 22.
  • test1.txt test2.py test3.sh test4.c sont les fichiers à transférer.
  • remote_1 est le nom d'utilisateur sur le système récepteur.
  • 10.10.11.113 est l'adresse IP du récepteur.
  • /home/remote_1/Documents est le chemin pour stocker les fichiers reçus.

Il est également possible d'utiliser des caractères génériques pour envoyer des fichiers avec la même extension :

scp <caractère_générique>.<extension> <utilisateur_récepteur>@<adresse_ip_cible>:

Par exemple, pour envoyer tous les fichiers .py à un serveur distant, utilisez:

scp *.py [email protected]:/home/remote_1/

Ici,

  • *.py désigne tous les fichiers Python.
  • remote1 est le nom d'utilisateur du destinataire.
  • 10.10.11.113 est l'adresse IP du destinataire.
  • /home/remote_1/ est l'emplacement de stockage des fichiers reçus.

Questions fréquentes

Le transfert de fichiers SCP est-il sécurisé ?

Le protocole Secure Copy (scp) s'appuie sur la technologie SSH et utilise le chiffrement et l'authentification pour les échanges de fichiers entre deux hôtes. Cela assure une protection et une intégrité totale des données.

SCP est-il plus sûr que SFTP ?

En matière de sécurité, les protocoles SCP et SFTP sont équivalents. L'avantage principal de SCP sur SFTP réside dans ses vitesses de transfert supérieures, ce qui s'avère particulièrement utile dans les réseaux avec une latence élevée.

Transfert sécurisé avec la commande scp sous Linux

À un moment ou un autre, chaque utilisateur doit échanger des fichiers sur le réseau. La commande scp facilite cette tâche de manière sécurisée et efficace, y compris sur les réseaux à forte latence. La connaissance des différentes options et de la syntaxe de scp peut être très utile. Vous pouvez également consulter nos guides sur comment renommer un fichier sous Linux et comment supprimer un fichier sous Linux pour enrichir vos compétences en gestion de fichiers. Cet article vous aura, nous l'espérons, permis d'apprendre à utiliser la commande scp pour transférer des fichiers sur des ordinateurs Linux. N'hésitez pas à nous faire part de vos questions ou difficultés dans la section des commentaires.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.