Qu’est-ce que les commandes SCP exactement ? Basé sur le protocole RCP (Remote Copy Protocol) de Berkeley Software Distribution (BSD), SCP (Secure Copy) est un protocole de transfert de fichiers en réseau qui permet des transferts de fichiers faciles et sécurisés entre un hôte distant et un hôte local, ou deux sites distants.

Les développeurs Full Stack utilisent fréquemment une commande SCP pour ses fonctions d’authentification et de cryptage sans avoir besoin de services d’hébergement tiers comme Github. C’est un moyen simple d’éviter d’exposer vos données aux renifleurs de paquets, tout en en préservant la confidentialité.

SCP est essentiellement un mélange de RCP et de SSH (Secure Shell). Il se base sur le premier pour effectuer des opérations de copie, et le second pour crypter les informations et authentifier les systèmes distants.

Contrairement à Rsync, tout ce dont vous avez besoin pour utiliser la ligne de commande SCP avec succès est un nom d’utilisateur et un mot de passe ou une phrase de passe pour les systèmes impliqués dans le transfert. Cela simplifie le processus puisque vous n’avez pas besoin de vous connecter à l’un ou l’autre de ces systèmes.

Exemple de syntaxe de la commande SCP Linux

Voici l’exemple de commande SCP Linux de base :

scp [autres options] [nom d'utilisateur source@IP]:/[dossier et nom de fichier] [nom d'utilisateur de destination@IP]:/[dossier de destination]

Cela peut sembler compliqué au début, mais nous nous ferons un plaisir de l’expliquer !

Dans cet exemple, nous effectuons un transfert entre deux serveurs VPS.

  • [autres options] sont des modificateurs que vous pouvez ajouter à la commande SCP Linux. Nous parlerons des plus populaires plus tard
  • [nom d’utilisateur source@IP] est le nom d’utilisateur et l’adresse IP de la machine sur laquelle se trouve le fichier que vous voulez. Cela ressemblerait à root@123.123.123.12
  • :/ informe la commande SCP que vous allez taper le dossier source
  • [dossier et nom de fichier] est l’endroit où se trouve le fichier, ainsi que son nom. Il ressemble à /utilisateurs/Hostinger/Bureau/SCP.png
  • [nom d’utilisateur de destination@IP] est le nom d’utilisateur et l’adresse IP de la machine de destination
  • [dossier de destination] est le dossier de destination où le fichier sera sauvegardé

Dans un scénario réel, cela ressemblerait à ceci :

scp -p root@162.168.1.1:/media/scp.png hostinger@162.168.1.2:/bureau/destination

Vous voyez, c’est assez simple ! Si vous copiez vers ou depuis une machine locale, vous n’aurez pas besoin de l’adresse IP, du chemin de destination ou du chemin source comme /bureau/nom_du_dossier.

Parlons des autres options que vous pouvez utiliser pour modifier la commande SCP Linux. Il existe 20 options courantes que vous pouvez utiliser sous la forme d’un seul caractère (-o), ainsi que leur équivalent descriptif (-option). Les options les plus courantes sont les suivantes :

  • -P permet de spécifier un port différent au serveur (le port TCP par défaut pour la commande est 22)
  • -c vous donne la possibilité de spécifier l’algorithme de cryptage que le client utilisera. Parmi les valeurs que vous pouvez utiliser, on trouve ‘aes256-ctr’, ‘aes256-cbc’, ‘blowfish-cbc’, ‘arcfour’, ‘arcfour128’, ‘arcfour256’, ‘cast128-cbc’, aes128-ctr’, ‘aes128-cbc’, ‘aes192-ctr’, ‘aes192-cbc’, et 3des-cbc’. L’option par défaut dans la configuration du shell est « AnyStdCipher ».
  • -q fera fonctionner l’opération en mode silencieux, ce qui signifie que seules les erreurs critiques seront affichées.
  • -r est pour la copie récursive, qui comprendra tous les sous-répertoires.
  • -4 ou -6 peuvent être utilisés si vous souhaitez choisir la version de protocole utilisée, soit IPv4 ou IPv6.
  • -p préservera les temps de modification et les attributs initiaux du fichier.
  • -u supprimera le fichier source une fois le transfert terminé.
  • -c permettra la compression des données pendant l’opération de transfert.

Points à surveiller

Puisque SCP utilise le cryptage SSH, vous aurez besoin du mot de passe ssh pour que le transfert de fichiers soit possible. De plus, il est nécessaire d’avoir une autorisation de lecture sur la machine d’où vous allez copier et des privilèges d’écriture sur la ou les machines vers lesquelles vous allez copier.

Pour l’authentification et la configuration de la connexion, vous devrez générer une paire de clés ssh dans le terminal en utilisant la commande suivante :

ssh-keygen -t rsa

Vous copiez cette clé sur le système à distance en utilisant :

ssh-copy-id utilisateur@machine_distante

Une fois que vous vous êtes authentifié sur la ou les machines distantes, la clé publique sera copiée et vous serez prêt à lancer les transferts.

Si vous ne vous souvenez pas du mot de passe root pour l’un ou l’autre système, vous pouvez demander au client ssh de sélectionner le fichier à partir duquel la clé privée d’identité pour la confirmation RSA est lue automatiquement.

Pour la version 2 du protocole, le chemin d’identité par défaut de la clé hôte est ~/.ssh/id_dsa, tandis que pour la version 1 du protocole, c’est ~/.ssh/id_rsa. Ensuite, vous devez trouver où sont stockées les sauvegardes des clés privées et publiques afin de pouvoir utiliser la commande ssh pour les utiliser automatiquement.

Pour le chemin d’accès /back-up/home/jack/.ssh, la commande est la suivante :

ssh -i /back-up/home/user/.ssh/id_dsa utilisateur@votreserveur.nomduserveur.domaine

ProTip : cette option comporte la valeur par défaut –overwrite [yes], donc à moins que vous ne spécifiiez l’option –overwrite no ou –overwrite ask dans votre commande scp, l’opération écrasera les fichiers qui ont des noms et des emplacements identiques sans aucun avertissement.

Si vous transférez des fichiers volumineux, nous vous recommandons d’utiliser une session tmux ou d’exécuter la commande dans un autre écran. De plus, vous devriez également utiliser l’option -v pour les transferts de grande taille. Elle obligera scp à afficher tout problème de débogage, d’authentification ou de configuration.

Copie de fichiers avec la commande SCP Linux

L’avantage du SCP est qu’il vous donne la possibilité de transférer des fichiers entre deux hôtes, ou entre un hôte et une machine locale. Voyons comment la commande doit être utilisée pour chaque type de transfert.

Fichier local vers une destination distante

Nous allons copier un fichier local scp.zip, à l’utilisateur de la machine distante appelé root. Le nom d’utilisateur est suivi de l’adresse IP du serveur.

Par exemple :

scp /utilisateurs/Hostinger/bureau/scp.zip root@191.162.0.2:/redaction/article

Si vous n’avez pas configuré de confirmation automatique du client ssh, vous serez invité à saisir le mot de passe de l’utilisateur de la machine distante et vous verrez un indicateur de progression. Il ressemblerait à ceci :

root@191.162.0.2’s password:
scp.zip 100% 0 0.0KB/s 00:00

Mais disons que la machine distante est configurée pour recevoir les connexions SSH sur un port autre que le port 22 par défaut. Dans ce cas, vous devez spécifier ce port à l’aide d’une option.

scp -P 2322 /utilisateurs/Hostinger/bureau/scp.zip root@191.162.0.2:/redaction/article

Si vous souhaitez également modifier le nom du fichier lors de l’opération de transfert, votre commande ressemblera alors à ceci (si votre port n’est pas celui par défaut, il suffit d’ajouter -P et le numéro de port) :

scp /utilisateurs/Hostinger/bureau/scp.zip root@191.162.0.2:/redaction/article/nouveauNomSCP.zip

Si vous voulez copier un dossier qui contient plus de fichiers et/ou de sous-dossiers, utilisez l’option -r que nous avons décrite précédemment :

scp -r /utilisateurs/Hostinger/bureau/scp.zip root@191.162.0.2:/redaction/article

Fichier distant vers une machine locale

Dans ce processus, la source et la cible de la commande sont inversées, ce qui doit donc se refléter dans votre syntaxe. Cette fois, nous essayons de copier scp.zip du même hôte distant vers notre machine locale :

scp root@191.162.0.2:/redaction/article/SCP.zip utilisateurs/Hostinger/bureau

Encore une fois, cela devrait provoquer le même résultat de connexion SSH où vous devez entrer le mot de passe, à moins que l’authentification n’ait été désactivée par les privilèges sudo, ou que vous n’ayez forcé le client ssh à utiliser une clé privée sur votre machine.

Fichier distant vers un autre endroit distant

Pour copier des fichiers d’un hôte distant à un autre, vous devrez entrer les mots de passe des deux comptes après avoir exécuté cette commande dans votre terminal.

Voici un exemple :

scp root@191.162.0.2:/redaction/article/scp.zip Hostinger@11.10.0.1:/publication

La commande ci-dessus copie le fichier source /redaction/article/scp.zip du premier hôte vers le deuxième. Pour copier des dossiers, il suffit d’ajouter l’option -r et de spécifier le chemin du dossier au lieu du fichier à l’intérieur de celui-ci, comme nous l’avons fait auparavant.

Dans des circonstances normales, le fichier passe directement du premier hôte distant au deuxième. Cependant, si vous souhaitez rediriger l’opération sur votre machine, vous pouvez ajouter l’option -3 :

scp -3 root@191.162.0.2:/redaction/article/scp.zip Hostinger@11.10.0.1:/publication

Voilà, c’est tout ce qu’il y a à faire !

Conclusion

Dans cet article, nous avons appris comment transférer facilement des fichiers entre des hôtes locaux et distants avec la commande scp Linux. C’est extrêmement utile lorsque vous travaillez avec plusieurs serveurs. Le protocole de copie sécurisée permet de copier avec succès des informations d’un hôte distant à un autre sans avoir à se connecter.

De plus, cette méthode de transfert de fichiers à distance crypte vos données avec un shell sécurisé, ce qui garantit la confidentialité des informations transmises.

Laisser un commentaire