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 ?
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 ?
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 ?
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
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
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
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
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
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
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
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
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
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
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
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
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
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Copier des fichiers et préserver les liens symboliques
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
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
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.
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.
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.
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