SCP est étroitement lié au protocole SSH et est né de la même idée.

En tant qu’extension du protocole SSH, SCP s’assure que les données restent confidentielles et ne sont pas altérées pendant leur transit.

Tout d’abord, nous allons comprendre comment fonctionne le SCP, puis nous verrons les commandes scp.

Qu’est-ce que SCP ?

A computer with two Secure Copy Protocol monitors and a globe on it.

SCP est l’acronyme de Secure Copy Protocol (protocole de copie sécurisée).

Il s’agit d’une méthode sûre et efficace pour copier des fichiers et des répertoires entre des hôtes locaux et distants ou entre deux hôtes distants.

Il est largement utilisé pour transférer des données en toute sécurité sur un réseau. SCP s’appuie sur SSH (Secure Shell) pour établir une connexion sécurisée et crypter les données pendant le transit.

Que vous ayez besoin de déplacer un seul fichier ou un répertoire entier, SCP constitue une solution fiable pour les transferts de fichiers à distance.

Comment fonctionne SCP ?

Two laptops use Secure Copy Protocol to transfer folders between them.

SCP s’appuie sur le protocole SSH, qui est un protocole de réseau cryptographique pour la connexion à distance sécurisée et l’exécution de commandes. Il utilise les mêmes mécanismes de sécurité que SSH, notamment le cryptage et l’authentification, pour protéger les données pendant la transmission.

Lors de l’utilisation de SCP, un utilisateur lance une commande de copie sur sa machine locale qui spécifie le fichier source et l’emplacement de destination sur une machine distante. SCP établit une connexion SSH avec le système distant, puis copie en toute sécurité les fichiers de la source à la destination.

Quand utiliser SCP ?

A computer with a secure file transfer protocol (SFTP) and a gear on it.

SCP est particulièrement utile dans les scénarios suivants.

Sauvegarde d’un serveur distant

SCP vous permet de sauvegarder des fichiers d’un serveur distant vers votre machine locale ou vice versa, ce qui garantit la redondance des données et la reprise après sinistre.

Déploiement d’applications

SCP simplifie également le processus en copiant en toute sécurité les fichiers nécessaires vers chaque système cible lors du déploiement d’applications sur plusieurs serveurs,

Transfert de fichiers volumineux

SCP offre une méthode alternative fiable et sécurisée de transmission de données pour les fichiers volumineux qui pourraient être trop volumineux pour être envoyés en pièces jointes à un courrier électronique.

Partage sécurisé des fichiers

SCP s’assure que les données restent cryptées tout au long de leur transit lors de l’envoi de fichiers confidentiels à d’autres personnes.

Collaboration à distance

SCP peut être utilisé pour partager des fichiers en toute sécurité avec des collaborateurs ou des membres d’équipe situés dans des lieux différents.

Syntaxe de la commande SCP

Avant de commencer à utiliser la commande SCP, il convient de comprendre la syntaxe de base.

La syntaxe de la commande SCP se présente comme suit :

scp [options] [source] [destination]

Explication de la syntaxe

Options

Il s’agit d’indicateurs facultatifs qui modifient le comportement de la commande SCP. Vous pouvez utiliser diverses options pour personnaliser le processus de transfert. Voici quelques options courantes :

-r : Copie récursivement les répertoires et leur contenu.
-p : Préserve les autorisations, les horodatages et les modes du fichier d’origine.
P : Spécifie le numéro de port pour la connexion SSH.
i : Spécifie le fichier de clé privée pour l’authentification SSH.
-C : Utilisez la compression pour accélérer le transfert des données.
-l : Limite la bande passante utilisée pour le transfert (en Kbit/s).
-v : Mode verbeux – affiche des messages de débogage pendant le transfert.
-o : Transmet une option au client SSH. Elle peut être utilisée pour désactiver la vérification stricte de la clé de l’hôte.

Source

La source indique le fichier ou le répertoire que vous souhaitez copier. Il peut s’agir d’un chemin local ou d’un chemin distant, selon le contexte.

Destination

La destination indique l’endroit où vous souhaitez copier la source. Comme la source, il peut s’agir d’un chemin local ou d’un chemin distant.

Exemples de commandes

#1. Copier un fichier d’un serveur local vers un serveur distant

scp /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

/chemin/vers/local/fichier.txt : Il s’agit du fichier source que vous souhaitez copier à partir de votre machine locale.

user@remotehost : Remplacez user par le nom de l’utilisateur distant et remote host par le nom d’hôte ou l’adresse IP du serveur distant.

/chemin/vers/destination/ : Il s’agit du chemin de destination sur le serveur distant où le fichier sera copié.

Exemple: Dans mon cas, j’ai choisi un serveur distant pour transférer le fichier.

Nom d’utilisateur de l’hôte distant – abhishekvarma

Adresse de l’hôte distant – 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Lors de la connexion à une machine distante, le système demande le mot de passe. Ici, j’ai sélectionné un fichier zip à copier.

Sortie

Ubuntu command line - secure copy protocol for transferring files.

Le résultat sera le suivant s’il n’y a pas d’erreur lors de la connexion à un serveur distant.

sample.zip 100% 20KB 717.9KB/s 00:00

#2. Copier un fichier de la machine distante vers la machine locale

scp user@remotehost:/path/to/remote/file.txt /chemin/vers/local/destination/

Même chose que ci-dessus, remplacez l’utilisateur et l’adresse de l’hôte distant.

Exemple

scp abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Sortie

A screenshot of a computer screen displaying the Secure Copy Protocol.

Il s’agit d’un exemple de sortie dans mon cas. L’heure varie en fonction de la vitesse de connexion.

sample.zip 100% 20KB 51.2KB/s 00:00

#3. Copier un répertoire de manière récursive

scp user@remotehost:/path/to/remote/file.txt /chemin/vers/local/destination/

Ici, l’option ‘-r’ indique à SCP de copier les répertoires de manière récursive (y compris les sous-répertoires et leur contenu).

Exemple

scp -r /home/vboxuser/Desktop abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ici, j’ai mentionné le répertoire entier pour copier les fichiers.

Sortie

A screenshot of a file transferred securely using the Secure Copy Protocol (SCP) displayed on a computer screen.
sample.zip 100% 20KB 1.0MB/s 00:00
Capture d'écran du 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00
.swp 100% 12KB 894.2KB/s 00:00
.help.swp 100% 12KB 780.4KB/s 00:00

#4. Copier les fichiers correspondant à un motif

scp /chemin/vers/local/*.txt user@remotehost:/chemin/vers/destination/

*.txt – Il s’agit d’un motif de remplacement qui correspond à tous les fichiers avec une extension .txt dans le répertoire local spécifié. Les chemins d’accès à la source et à la destination sont les mêmes que précédemment.

Exemple

scp /home/vboxuser/Desktop/locfolder/*.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

Ubuntu ssh client - screenshot thumbnail with Secure Copy Protocol support.

Ici, j’ai essayé avec une extension .png.

Capture d'écran du 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00
Capture d'écran du 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00
Capture d'écran de 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00

#5. Préservez les attributs des fichiers

scp -p /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

Ici, l’option ‘-p’ préserve les heures de modification, les heures d’accès et les modes du fichier source lors de la copie.

Exemple

scp -p /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

Ubuntu terminal - screenshot thumbnail with Secure Copy Protocol integration.
sample.zip 100% 20KB 420.0KB/s 00:00

#6. Spécifiez un port SSH différent

scp -P 22 /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

Le drapeau ‘-P’ spécifie un port SSH différent (22 dans ce cas) pour la connexion SCP. Vous pouvez utiliser le port de votre choix.

Exemple

scp -P 22 /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Résultat

A screenshot of a secure copy protocol transfer in an Ubuntu terminal.
sample.zip 100% 20KB 1.2MB/s 00:00

#7. Copier avec compression

scp -C /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

L’option ‘-C’ active la compression pendant le transfert, ce qui permet de réduire la taille des données transférées. Les adresses de source et de destination sont les mêmes que celles expliquées précédemment.

Exemple

scp -C /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

A screenshot of a computer screen displaying a file transfer using Secure Copy Protocol.
sample.zip 100% 20KB 985.8KB/s 00:00

#8. Sortie verbeuse pour le débogage

scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/

L’option ‘-v’ active la sortie verbeuse, qui fournit des informations plus détaillées pendant le processus de transfert.

Exemple

scp -v /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

Ubuntu terminal - Secure Copy Protocol.

L’exemple de sortie ressemble à ceci.

Exécution : programme /usr/bin/ssh hôte 192.168.29.70, utilisateur abhishekvarma, commande scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1 : Lecture des données de configuration /etc/ssh/ssh_config
debug1 : /etc/ssh/ssh_config ligne 19 : include /etc/ssh/ssh_config.d/*.conf ne correspond à aucun fichier
debug1 : /etc/ssh/ssh_config ligne 21 : Application des options pour *
debug1 : Connexion à 192.168.29.70 [192.168.29.70] port 22. debug1 : Connexion établie.
debug1 : Fichier d'identité /root/.ssh/id_rsa type -1
debug1 : Identity file /root/.ssh/id_rsa-cert type -1 debug1 : Identity file /root/.ssh/id_ecdsa type -1 debug1 : Identity file /root/.ssh/id_ecdsa-cert type -1 debug1 : Identity file /root/.ssh/id_ecdsa_sk type -1 debug1 : Identity file /root/.ssh/id_ecdsa_sk-cert type -1

#9. Copier d’un fichier distant vers un fichier local avec la sortie Verbose

scp -v user@remotehost:/path/to/remote/file.txt /chemin/vers/local/destination/

Mêmes explications que dans l’exemple précédent, avec les rôles de l’emplacement local et de l’emplacement distant inversés.

Exemple

scp -v abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Sortie

A screenshot demonstrating the Secure Copy Protocol implemented in a python script on a pc.

La sortie ressemblera à ceci.

Exécution : programme /usr/bin/ssh host 192.168.29.70, user abhishekvarma, commande scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1 : /etc/ssh/ssh_config ligne 19 : include /etc/ssh/ssh_config.d/*.conf ne correspond à aucun fichier
debug1 : Lecture des données de configuration /etc/ssh/ssh_config
debug1 : /etc/ssh/ssh_config ligne 21 : Application des options pour *
debug1 : Connexion à 192.168.29.70 [192.168.29.70] port 22. debug1 : Connexion établie.
debug1 : Fichier d'identité /root/.ssh/id_rsa type -1
debug1 : Identity file /root/.ssh/id_rsa-cert type -1 debug1 : Identity file /root/.ssh/id_ecdsa type -1 debug1 : Identity file /root/.ssh/id_ecdsa-cert type -1 debug1 : Identity file /root/.ssh/id_ecdsa_sk type -1 debug1 : Identity file /root/.ssh/id_ecdsa_sk-cert type -1

#10. Copier en utilisant une clé SSH différente


scp -i /chemin/vers/clé_privée.pem /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

Ce drapeau “-i /chemin/vers/clé_privée.pem” spécifie une clé privée SSH différente pour l’authentification.

Exemple

scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

Ubuntu terminal - screenshot thumbnail featuring Secure Copy Protocol.

Si vous avez une clé privée, vous pouvez l’utiliser, sinon vous pouvez utiliser la clé par défaut.

sample.zip 100% 20KB 1.1MB/s 00:00

#11. Copier plusieurs fichiers sur le serveur distant

scp fichier1.txt fichier2.txt user@remotehost:/chemin/vers/destination/

Cette commande copie les fichiers file1.txt et file2.txt du répertoire local vers la destination spécifiée sur le serveur distant.

Exemple

scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop 

Résultat

Ubuntu terminal - screenshot thumbnail with Secure Copy Protocol.
image.png 100% 39KB 1.4MB/s 00:00
sample.zip 100% 20Ko 1.5MB/s 00:00

#12. Copier un fichier distant avec un nom différent

scp user@remotehost:/path/to/remote/file.txt /chemin/vers/local/nouveaunom.txt

Cette commande copie le fichier file.txt du serveur distant vers le répertoire local, en le renommant en newfilename.txt au cours du processus.

Exemple

scp abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Sortie

A secure screenshot of a python program on a phone utilizing the Secure Copy Protocol.

Les extensions de l’ancien et du nouveau fichier doivent être identiques lors de l’exécution de cette commande.

sample.zip 100% 20KB 28.7KB/s 00:00

#13. Copier avec une limite de bande passante spécifique

scp -l 1000 /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

L’option ‘-l’ spécifie une limite de bande passante en Kbps (1000 Kbps dans ce cas) pour le transfert.

Exemple

scp -l 300 /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

Ubuntu terminal - screenshot thumbnail using Secure Copy Protocol for file transfer.
sample.zip 100% 20KB 31.3KB/s 00:00
scp -rp /chemin/vers/local/source/ user@remotehost:/chemin/vers/destination/

L’option ‘-p’ préserve les attributs des fichiers et l’option ‘-r’ copie récursivement les répertoires. Cette commande préserve également les liens symboliques pendant la copie.

Exemple

scp -rp /home/vboxuser/Desktop/image.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

Ubuntu terminal - screenshot thumbnail for Secure Copy Protocol.
image.png 100% 39KB 1.8MB/s 00:00

#15. Copier des fichiers en mode verbeux avec compression

scp -vC /chemin/vers/local/fichier.txt user@remotehost:/chemin/vers/destination/

Cette commande combine à la fois la sortie verbeuse (-v) et la compression (-C) pendant le transfert de fichiers.

Exemple

scp -vC /home/vboxuser/Desktop/image.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Sortie

A screenshot of a computer screen displaying a Secure Copy Protocol (SCP) session with a list of files.

La sortie ressemblera à ceci.

scp : debug1 : fd 3 clearing O_NONBLOCK
Envoi des modes de fichiers : C0664 40050 image.png
Sink : C0664 40050 image.png
image.png
d 6 efface O_NONBLOCK
scp : debug1 : fd - clearing O_NONBLOCK
image.png
debug1 : client_input_channel_req : channel type exit-status reply debug1 : channel 0 : free : client-session, channels 1
Transféré : envoyé 40220, reçu 2576 octets, en 0.1 secondes
Octets par seconde : envoyés 352570.0, reçus 22581.3
root@ubuntu : ~
debug1 : Statut de sortie 0
debug1 : compress outgoing : raw data 40287, compressed 38198, factor 0.95 debug1 : compress incoming : raw data 792, compressed 757, factor 0.96 

#16. Copie entre deux serveurs distants

Si vous souhaitez transférer des fichiers d’un serveur distant à un autre, vous pouvez utiliser la commande suivante.

scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/chemin/vers/destination/

Cette commande transfère directement le fichier.txt de l’hôte distant1 à l’hôte distant2.

Exemple

scp user1@remotehost1:/path/to/remote/file.txt abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Résultat

file.txt 100% 512KB 512.0KB/s 00:00

En cas d’erreur ou de problème pendant le transfert, la sortie peut afficher des messages d’erreur qui fournissent des informations sur ce qui n’a pas fonctionné.

ssh : connect to host source.example.com port 22 : Connection refused
connexion perdue

Dans ce cas, le message d’erreur indique que la connexion SSH au serveur source a été refusée. Cela peut être dû à diverses raisons, telles qu’un nom d’hôte, une adresse IP ou un port incorrects, ou encore des problèmes liés à la configuration SSH.

FAQ sur SCP

Voici quelques questions fréquemment posées concernant le protocole SCP, ainsi que leurs réponses.

Quelle est la différence entre SCP et FTP ou SFTP ?

FTP signifie File Transfer Protocol (protocole de transfert de fichiers).

SFTP signifie File Transfer Protocol (protocole de transfert de fichiers). Ces deux protocoles sont utilisés pour le transfert de fichiers.

SCP fonctionne via SSH et offre à la fois le cryptage et l’authentification dans un seul protocole, ce qui le rend plus sûr et plus efficace.

Quand dois-je utiliser SCP ?

SCP est le mieux adapté aux scénarios dans lesquels des transferts de fichiers sécurisés et fiables sont nécessaires, tels que les sauvegardes à distance, le déploiement de logiciels, la distribution de fichiers de configuration et la collaboration entre les membres d’une équipe.

SCP est-il compatible avec les adresses IPv6 ?

Oui, SCP prend en charge les adresses IPv4 et IPv6, ce qui vous permet de transférer des fichiers sur des réseaux utilisant n’importe quel système d’adressage.

Conclusion✍️

J’espère que cet article vous a été utile pour en savoir plus sur le SCP et son fonctionnement.

Vous pourriez également être intéressé par les commandes Linux pour l’administrateur système