SCP (copie sécurisée) est un utilitaire de ligne de commande qui vous permet de copier en toute sécurité des fichiers et des répertoires entre deux emplacements.
Avec scp
, vous pouvez copier un fichier ou un répertoire :
- De votre système local à un système distant.
- D'un système distant à votre système local.
- Entre deux systèmes distants de votre système local.
Lors du transfert de données avec scp
, les fichiers et le mot de passe sont cryptés afin que quiconque espionne le trafic n'obtienne rien de sensible.
Dans ce tutoriel, nous allons vous montrer comment utiliser le scp
commande à travers des exemples pratiques et des explications détaillées des options scp les plus courantes.
Syntaxe de commande SCP #
Avant d'expliquer comment utiliser le scp
commande, commençons par revoir la syntaxe de base.
Le scp
la syntaxe de la commande prend la forme suivante :
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION
- options scp telles que le chiffrement, la configuration ssh, le port ssh, la limite, la copie récursive…etc.[user@]SRC_HOST:]file1
- Fichier source.[user@]DEST_HOST:]file2
- Fichier de destination
Les fichiers locaux doivent être spécifiés à l'aide d'un chemin absolu ou relatif, tandis que les noms de fichiers distants doivent inclure une spécification d'utilisateur et d'hôte.
scp
fournit un certain nombre d'options qui contrôlent chaque aspect de son comportement. Les options les plus utilisées sont :
-P
- Spécifie le port ssh de l'hôte distant.-p
- Préserve les heures de modification et d'accès des fichiers.-q
- Utilisez cette option si vous souhaitez supprimer la jauge de progression et les messages sans erreur.-C
- Cette option forcescp
pour comprimer les données au fur et à mesure qu'elles sont envoyées à la machine de destination.-r
- Cette option indiquescp
pour copier des répertoires de manière récursive.
Avant de commencer #
Le scp
la commande repose sur ssh
pour le transfert de données, il nécessite donc une clé ssh ou un mot de passe pour s'authentifier sur les systèmes distants.
Les deux-points (:
) est comment scp
faire la distinction entre les emplacements locaux et distants.
Pour pouvoir copier des fichiers, vous devez au moins disposer des autorisations de lecture sur le fichier source et d'écriture sur le système cible.
Soyez prudent lorsque vous copiez des fichiers qui partagent le même nom et le même emplacement sur les deux systèmes, scp
écrasera les fichiers sans avertissement.
Lors du transfert de fichiers volumineux, il est recommandé d'exécuter le scp
commande dans un screen ou tmuxsession.
Copier des fichiers et des répertoires entre deux systèmes avec scp
#
Copier un fichier local sur un système distant avec le scp
Commande #
Pour copier un fichier d'un système local vers un système distant, exécutez la commande suivante :
scp file.txt [email protected]:/remote/directory
Où file.txt
est le nom du fichier que nous voulons copier, remote_username
est l'utilisateur sur le serveur distant, 10.10.0.2
est l'adresse IP du serveur. Le /remote/directory
est le chemin d'accès au répertoire dans lequel vous souhaitez copier le fichier. Si vous ne spécifiez pas de répertoire distant, le fichier sera copié dans le répertoire de base de l'utilisateur distant.
Vous serez invité à entrer le mot de passe de l'utilisateur et le processus de transfert commencera.
[email protected]'s password:
file.txt 100% 0 0.0KB/s 00:00
Omettre le nom de fichier de l'emplacement de destination copie le fichier avec le nom d'origine. Si vous souhaitez enregistrer le fichier sous un nom différent, vous devez spécifier le nouveau nom de fichier :
scp file.txt [email protected]:/remote/directory/newfilename.txt
Si SSH sur l'hôte distant écoute sur un port autre que le 22 par défaut, vous pouvez spécifier le port à l'aide de -P
argument :
scp -P 2322 file.txt [email protected]:/remote/directory
La commande pour copier un répertoire ressemble beaucoup à la copie de fichiers. La seule différence est que vous devez utiliser le -r
drapeau pour récursif.
Pour copier un répertoire d'un système local vers un système distant, utilisez le -r
choix :
scp -r /local/directory [email protected]:/remote/directory
Copier un fichier distant sur un système local à l'aide de scp
Commande #
Pour copier un fichier d'un système distant vers un système local, utilisez l'emplacement distant comme source et l'emplacement local comme destination.
Par exemple pour copier un fichier nommé file.txt
depuis un serveur distant avec IP 10.10.0.2
exécutez la commande suivante :
scp [email protected]:/remote/file.txt /local/directory
Si vous n'avez pas défini de connexion SSH sans mot de passe sur la machine distante, il vous sera demandé de saisir le mot de passe utilisateur.
Copier un fichier entre deux systèmes distants à l'aide de scp
Commande #
Contrairement à rsync
, lors de l'utilisation de scp
vous n'avez pas besoin de vous connecter à l'un des serveurs pour transférer des fichiers d'une machine distante à une autre.
La commande suivante copiera le fichier /files/file.txt
depuis l'hôte distant host1.com
dans le répertoire /files
sur l'hôte distant host2.com
.
scp [email protected]:/files/file.txt [email protected]:/files
Vous serez invité à saisir les mots de passe des deux comptes distants. Les données seront transférées directement d'un hôte distant à l'autre.
Pour acheminer le trafic via la machine sur laquelle la commande est émise, utilisez le -3
choix :
scp -3 [email protected]:/files/file.txt [email protected]:/files
Conclusion #
Dans ce tutoriel, vous avez appris à utiliser le scp
commande pour copier des fichiers et des répertoires.
Vous pouvez également configurer une authentification basée sur une clé SSH et vous connecter à vos serveurs Linux sans saisir de mot de passe.
Si vous vous connectez régulièrement aux mêmes systèmes, vous pouvez simplifier votre flux de travail en définissant toutes vos connexions dans le fichier de configuration SSH.