Vous avez déjà voulu transférer des fichiers sur un réseau et vous êtes heurté à des problèmes de sécurité ? Vous ne pouvez pas simplement envoyer vos fichiers sur le réseau en espérant qu'ils restent protégés, comme le Petit Chaperon Rouge ! Des mesures de sécurité s'imposent. Vous devez utiliser un protocole de transfert de fichiers qui protège vos données contre les accès non autorisés, l'interception réseau, les fuites de données et d'autres types de menaces.
Le Secure Copy Protocol (SCP) est un protocole réseau de transfert de fichiers qui permet d'échanger des fichiers entre différentes machines sur un réseau. Dans cet article, nous allons mieux comprendre ce protocole et explorer les possibilités qu'offre SCP pour transférer des fichiers d'une machine distante vers une machine locale.
- Comment fonctionne SCP ?
- Utiliser SCP pour les transferts de fichiers : pourquoi et comment ?
- Transférer des fichiers avec SCP
- Autres commandes SCP courantes
- Existe-t-il des alternatives à SCP ?
- Conclusion
- Questions fréquemment posées
- Y a-t-il des problèmes de sécurité à connaître lorsqu'on utilise SCP d'un serveur distant vers un poste local ?
- Quelles sont les erreurs courantes lors de l'utilisation de SCP pour transférer des fichiers d'un serveur distant vers une machine locale ?
- Comment utiliser SCP pour transférer des fichiers entre des systèmes distants ?
Comment fonctionne SCP ?
SCP utilise SSH (Secure Shell) pour transférer vos fichiers. Concrètement, qu'est-ce que cela signifie ? SSH est un protocole réseau qui permet un accès distant sécurisé aux serveurs. Il intègre des mécanismes d'authentification, de chiffrement et de vérification de l'intégrité des données transmises. SCP s'appuie sur ces fonctionnalités de sécurité et ces méthodes de chiffrement fournies par SSH pour transférer des fichiers sur un réseau en toute sécurité. Vous pouvez ainsi utiliser SCP pour des transferts entre serveurs distants et machines locales, tout en garantissant l'authenticité et la confidentialité de vos données.
Utiliser SCP pour les transferts de fichiers : pourquoi et comment ?
Utiliser SCP pour transférer des fichiers depuis un serveur distant vers une machine locale, ou inversement, est une méthode à la fois efficace et flexible. SCP présente plusieurs avantages notables par rapport aux autres protocoles de transfert : il offre notamment un niveau de sécurité supérieur à des méthodes comme FTP. SCP se distingue aussi par sa vitesse — il est généralement bien plus rapide que SFTP — ce qui en fait un outil de choix pour les transferts de fichiers entre machines Linux.
Vous pouvez déplacer des fichiers avec SCP :
- D'une machine locale vers une machine distante
- D'une machine distante vers une machine locale
- D'une machine distante vers une autre machine distante.
Voyons maintenant comment utiliser concrètement la syntaxe SCP sur Linux pour transférer des fichiers. La première étape consiste à installer SSH sur vos deux machines. Cela dit, SSH est généralement préinstallé sur les systèmes Linux. Si c'est déjà votre cas, vous pouvez passer directement à la suite.
1. Configurer SSH
Exécutez la commande suivante pour installer SSH :
sudo apt install openssh-client
2. Générer des clés SSH
La machine cliente doit ensuite établir une connexion SSH. Pour sécuriser la communication entre le client et le serveur, vous avez besoin d'une paire de clés : une clé privée et une clé publique. La commande suivante génère cette paire de clés SSH :
ssh-keygen
Lors de l'exécution de cette commande, il vous sera probablement demandé de choisir un nom pour la paire de clés ainsi qu'une phrase secrète (facultative). Une fois la paire de clés générée, vous devez copier la clé publique sur le serveur.
Voici maintenant la forme générale de la commande SCP :
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [options] > Ce premier paramètre peut être remplacé par différentes options de la commande SCP, que nous détaillerons plus loin.
- [source username@IP] > Ce paramètre doit être remplacé par le nom d'utilisateur et l'adresse IP de la machine locale. Par exemple : [email protected]
- [directory/file name] > Ce paramètre doit être remplacé par le chemin du fichier que vous souhaitez envoyer.
- [destination username@IP] > Ce paramètre doit être remplacé par le nom d'utilisateur et l'adresse IP de la machine de destination.
- [directory] > Remplacez cette section par l'emplacement souhaité pour votre fichier sur la machine distante.
Vous connaissez maintenant la structure générale de la commande. Voici un aperçu des options les plus utiles :
| Option | Cas d'usage |
| -C |
Cette option compresse vos fichiers pendant le transfert.
|
| -c <cipher> |
Cette option permet de spécifier le chiffrement à utiliser. Par exemple : scp -c <aes128-ctr>.
|
| -v |
Cette option affiche le déroulement détaillé du processus, étape par étape.
|
| -l <limit in kilobytes> |
Cette option permet de définir une limite de bande passante maximale. Par exemple, la commande suivante limite le débit à 100 ko par seconde : scp -l 100
|
| -P |
Cette option permet de changer le port SSH du serveur distant auquel vous souhaitez vous connecter. SCP utilise le port 22 par défaut.
|
| -S <nom du programme> |
Cette option permet de choisir le programme utilisé pour la connexion.
|
| -r |
Copier un fichier ou un répertoire entier de manière récursive.
|
Transférer des fichiers avec SCP
Nous avons vu qu'il existe trois types de transferts avec SCP. Explorons maintenant chacun d'eux en détail. Voici la situation : j'ai une photo de chat sur le bureau de mon ordinateur Linux, et je veux d'abord la transférer vers un serveur distant Linux. Ensuite, je la rapatrierai sur mon ordinateur local. Et pour finir, notre chat chanceux voyagera entre deux machines distantes.

SCP d'un poste local vers un serveur distant
Cette commande transfère votre fichier d'un ordinateur local vers un serveur distant :
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Pour utiliser la commande scp avec un mot de passe, saisissez le mot de passe de votre serveur distant. C'est tout.

SCP d'un serveur distant vers un poste local
Pour inverser ce processus, vous n'avez pas besoin d'accéder au terminal de votre serveur distant. Depuis le terminal de votre ordinateur local, saisissez cette commande :
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
Comme vous pouvez le constater, nous avons simplement inversé les deux parties de la commande.

SCP entre deux machines distantes
Transférons maintenant le chat entre deux machines distantes. Cette étape nécessite les mots de passe des deux machines distantes, assurez-vous de les avoir. Utilisez cette commande pour transférer un fichier entre deux ordinateurs distants :
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

Autres commandes SCP courantes
Les usages les plus courants de SCP sont : le transfert depuis un serveur distant vers le local, depuis le local vers un serveur distant, et entre deux hôtes distants. Mais allons plus loin et explorons d'autres exemples utiles de Linux scp.
1. Copier un répertoire entier de façon récursive
Supposons que vous souhaitiez transférer un répertoire entier avec tous les fichiers qu'il contient. Les transférer un par un serait très fastidieux. Vous pouvez à la place copier le répertoire de manière récursive avec la commande scp :
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
Cela peut être utile dans plusieurs situations :
- Déploiement de code : lors du déploiement de code ou d'applications web, vous devrez peut-être transférer un répertoire complet avec tous ses composants, comme les fichiers et les scripts.
- Sauvegarde et synchronisation : si vous souhaitez sauvegarder un répertoire entier ou synchroniser deux répertoires entre votre machine locale et le serveur distant, vous devez tout copier de manière récursive.
- Migration de système : lors d'une migration de système, copier l'intégralité des données critiques est une étape essentielle. L'option -r de la commande SCP garantit qu'aucun fichier ne sera oublié pendant le processus.
2. Limiter l'utilisation de la bande passante
Si vous souhaitez contrôler le débit auquel vos données sont transférées, utilisez la commande suivante :
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Mais pourquoi feriez-vous cela ?
Dans ces deux cas, vous pouvez utiliser la syntaxe Linux scp pour limiter la bande passante :
- Congestion réseau : Si votre réseau est fortement congestionné, limiter la bande passante avec scp peut aider à mieux répartir les ressources réseau. Cela garantit que les autres tâches réseau s'exécutent sans problème. C'est particulièrement important lors de transferts de fichiers sur un réseau partagé, où votre processus pourrait perturber l'activité des autres utilisateurs.
- Transferts en arrière-plan : Lors de transferts SCP en arrière-plan, comme des sauvegardes automatisées ou des processus de synchronisation, ces tâches risquent de consommer l'ensemble de vos ressources réseau. Dans ce cas, vous pouvez limiter la bande passante allouée à ces transferts pour mieux gérer vos ressources.
3. Obtenir un journal détaillé
Utiliser l'option -v avec SCP génère un journal détaillé du processus de transfert. Utilisez la commande ci-dessous pour obtenir des informations complètes en retour :
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Voici pourquoi cette commande est utile à retenir :
- Dépannage : Cette option affiche la progression du transfert en temps réel : taille du fichier, pourcentage d'avancement, messages d'erreur et avertissements. En combinant ces données, vous pouvez surveiller le transfert et diagnostiquer les problèmes au besoin.
4. Spécifier un port SSH
La syntaxe Linux scp avec l'option -P vous permet de changer le port SSH. Voici la commande correspondante :
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Cela peut être utile dans les cas suivants :
- Configuration du pare-feu : Si le port SSH par défaut est bloqué, ou si vous souhaitez dissimuler le service SSH face à des menaces potentielles, vous pouvez changer le port SSH.
Existe-t-il des alternatives à SCP ?
SCP est rapide et sécurisé. En maîtrisant la bonne syntaxe Linux scp et quelques techniques de diagnostic, il peut suffire à lui seul. Cela dit, il est utile de connaître les alternatives disponibles.
1. rsync
rsync est un outil de transfert de fichiers polyvalent, doté de fonctionnalités avancées : synchronisation, transferts incrémentiels, copie locale et distante. Il réduit l'utilisation de la bande passante en ne transférant que les différences entre les fichiers source et destination. Autre avantage notable : rsync peut reprendre un transfert interrompu là où il s'était arrêté.
Avantages de rsync
- Synchronisation efficace des fichiers et des répertoires.
- Prend en charge l'algorithme de transfert delta, ce qui réduit le volume de données transféré.
- Peut reprendre les transferts interrompus.
Inconvénients de rsync
- Nécessite que rsync soit installé sur les systèmes source et destination.
- Demande plus de configuration et d'options de commande que scp.
2. SFTP (Protocole de transfert de fichiers SSH)
SFTP offre un moyen sécurisé de transférer des fichiers via SSH. Il propose des fonctionnalités similaires à FTP, mais opère sur une connexion SSH chiffrée, tout comme SCP. Sur certains points, SFTP va cependant plus loin que SCP. SCP ne peut pas afficher le contenu des répertoires, ni créer ou supprimer des répertoires, entre autres limitations. SFTP, lui, prend en charge toutes ces opérations.
Avantages de SFTP
- Transfert de fichiers sécurisé avec chiffrement.
- Gestion de fichiers à distance.
- Disponible sur la plupart des systèmes Linux et Unix.
Inconvénients de SFTP
- La syntaxe et l'utilisation des commandes diffèrent de FTP classique.
- Support limité sur certains systèmes embarqués ou appareils.
3. FTP (Protocole de transfert de fichiers)
FTP est un protocole standard très répandu pour le transfert de fichiers. Il fonctionne selon un modèle client-serveur et offre des fonctionnalités de transfert de base.
Avantages de FTP
- Compatible avec de nombreuses plateformes.
- Clients en ligne de commande et graphiques disponibles.
Inconvénients de FTP
- Pas de chiffrement : moins sécurisé que scp et sftp.
- Peut nécessiter une configuration supplémentaire du pare-feu pour établir les connexions.
- Authentification en texte clair.
En résumé, scp est un choix simple et fiable pour le transfert sécurisé de fichiers via SSH, mais des alternatives comme rsync, sftp et FTP peuvent offrir des fonctionnalités supplémentaires et plus de flexibilité selon vos besoins.
Comment choisir entre ces outils ? Prenez en compte des critères comme la sécurité, les besoins en synchronisation, la facilité d'utilisation et la compatibilité avec vos systèmes et protocoles. Par exemple, si la confidentialité des données est votre priorité absolue, FTP n'est pas le bon choix.
Conclusion
SCP est un outil rapide et sécurisé pour transférer des fichiers entre machines. Vous pouvez l'utiliser pour copier des fichiers d'un serveur distant vers un poste local, d'un poste local vers un serveur distant, ou même entre deux serveurs distants. Bien que des alternatives comme rsync existent, SCP les surpasse sur de nombreux points, notamment en termes de sécurité et de vitesse. Dans cet article, nous avons présenté SCP, ses cas d'usage et ses alternatives, ainsi qu'un aide-mémoire des commandes les plus courantes.
Questions fréquemment posées
Y a-t-il des problèmes de sécurité à connaître lorsqu'on utilise SCP d'un serveur distant vers un poste local ?
SCP est un outil fiable et sécurisé : vous n'avez pas à vous inquiéter des menaces de sécurité lors de son utilisation. Cela dit, il est toujours conseillé d'appliquer toutes les mesures de sécurité supplémentaires à votre disposition.
Quelles sont les erreurs courantes lors de l'utilisation de SCP pour transférer des fichiers d'un serveur distant vers une machine locale ?
Lors d'un transfert de fichiers d'un serveur distant vers une machine locale avec SCP, certaines erreurs reviennent fréquemment. Voici les deux plus courantes :
- No such file or directory : cette erreur se produit lorsque le numéro de port est incorrect, que les permissions sur les fichiers sont mal configurées, ou que les identifiants de connexion sont erronés.
- Host Key Verification Failed : cette erreur apparaît lorsque la clé d'hôte a changé suite à une mise à jour du serveur. La clé d'hôte confirme que vous vous êtes déjà connecté à ce serveur. Lorsque la vérification échoue, cela indique que l'identité du serveur a changé. Cette protection vise à vous éviter de vous connecter à un serveur frauduleux.
Comment utiliser SCP pour transférer des fichiers entre des systèmes distants ?
Pour transférer des fichiers entre deux machines avec SCP, les deux doivent être accessibles via SSH. Vous aurez également besoin de l'adresse IP et du mot de passe des machines distantes. Il suffit ensuite d'utiliser la bonne commande SCP :
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
Après avoir saisi cette commande, il vous sera demandé de fournir le mot de passe des serveurs. Votre fichier sera ensuite transféré.