commande scp – Copie sécurisée

Scp (Secure Copy) est un outil en ligne de commande pour copier ou transférer des fichiers entre hôtes. Il utilise le même type de mécanisme de sécurité que le programme ssh.

En fait, il utilise une connexion ssh en arrière-plan pour effectuer le transfert de fichiers. scp fait référence à la fois au « protocole » qui définit comment la copie sécurisée doit fonctionner et au « programme » (commande) qui est installé comme une partie de la suite d’outils OpenSSH.

Dans ce tutoriel rapide, nous allons examiner quelques exemples la commande scp et comment elle peut être utilisée pour transférer des fichiers de manière sécurisée.

Comment installer scp

Scp est généralement installé par défaut sur la plupart des distros linux comme une partie des paquets openssh. Sur ubuntu/debian par exemple, le paquet openssh-client fournit le programme scp.

$ dpkg -L openssh-client | grep scp/usr/bin/scp/usr/share/man/man1/scp.1.gz

C’est le paquet OpenSSH qui fournit les programmes ssh, scp, sftp ainsi que de nombreux autres outils. Nous n’avons donc rien à faire de plus ici, sauf utiliser et apprendre le programme.

Utiliser scp – syntaxe de base

La syntaxe de base de scp est très simple à mémoriser. Elle ressemble à ceci

$ scp source_file_path destination_file_path

Selon l’hôte, le chemin du fichier doit inclure l’adresse complète de l’hôte, le numéro de port, le nom d’utilisateur et le mot de passe ainsi que le chemin du répertoire.

Si vous « envoyez » un fichier de votre machine locale à une machine distante (téléchargement), la syntaxe ressemblerait à ceci

$ scp ~/my_local_file.txt _host.com:/some/remote/directory

Lorsque vous copiez un fichier d’un hôte distant à un hôte local (téléchargement), son apparence est juste l’inverse

$ scp _host.com:/some/remote/directory ~/my_local_file.txt# just download the file$ scp :/some/path/file.txt .

C’est à peu près tout ce qui concerne l’utilisation de scp pour les tâches régulières. En dehors de cela, il y a un couple d’options et de fonctions supplémentaires que scp supporte. Prenons un rapide aperçu de ceux-ci.

Et oui, par défaut, scp écrasera toujours les fichiers sur la destination. Si vous devez éviter cela, utilisez un outil plus puissant appelé rsync.

Exemples de la commande scp

1. Sortie verbeuse

Avec la sortie verbeuse, le programme scp sortirait beaucoup d’informations sur ce qu’il fait en arrière-plan. Cela est souvent utile lorsque le programme échoue ou n’est pas en mesure de terminer la requête. La sortie verbeuse indiquerait alors le point exact où le programme a rencontré des problèmes.

$ scp -v ~/test.txt :/root/help2356.txtExecuting: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txtOpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013debug1: Reading configuration data /home/enlightened/.ssh/configdebug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 19: Applying options for *debug1: Connecting to 192.168.1.3 port 22.debug1: Connection established...... OUTPUT TRUNCATED

La sortie serait grande et contiendrait des informations détaillées sur la façon dont la connexion est établie, quels fichiers de configuration et d’identité sont utilisés et ainsi de suite.

2. transférer plusieurs fichiers

Des fichiers multiples peuvent être spécifiés séparés par un espace comme ceci

$ scp foo.txt bar.txt :/path/directory/

Pour copier plusieurs fichiers de l’hôte distant vers le répertoire local actuel

$ scp :/path/directory/\{foo.txt,bar.txt\} .$ scp :~/\{abc.log,cde.txt\} .

3. Copier un répertoire entier (récursivement)

Pour copier un répertoire entier d’un hôte à un autre, utilisez le commutateur r et spécifiez le répertoire

$ scp -v -r ~/Downloads :/root/Downloads

4. Copier des fichiers à travers 2 hôtes distants

Scp peut copier des fichiers d’un hôte distant à un autre hôte distant également.

$ scp :/some/remote/dir/foobar.txt :/some/remote/dir/

5. Accélérer le transfert avec la compression

Une option super cool pour accélérer le transfert afin de gagner du temps et de la bande passante. Il suffit d’utiliser l’option C pour activer la compression. Les fichiers sont compressés à la volée et décompressés sur la destination.

$ scp -vrC ~/Downloads :/root/Downloads

Dans l’exemple ci-dessus, nous avons déplacé le répertoire entier avec la compression activée. Le gain de vitesse dépendrait de la quantité de fichiers pouvant être compressés.

6. Limitez l’utilisation de la bande passante

Si vous ne voulez pas que scp prenne toute la bande passante disponible, alors utilisez l’option l pour limiter la vitesse maximale en Kbit/s.

$ scp -vrC -l 400 ~/Downloads :/root/Downloads

7. Se connecter à un numéro de port différent sur l’hôte distant

Si le serveur distant a le démon ssh fonctionnant sur un port différent (par défaut, c’est 22), alors vous devez indiquer à scp d’utiliser ce numéro de port particulier en utilisant l’option ‘-P’.

$ scp -vC -P 2200 ~/test.txt :/some/path/test.txt

8. Préserver les attributs du fichier

L’option ‘-p’ (en minuscules), préserverait les heures de modification, les heures d’accès et les modes du fichier original.

$ scp -C -p ~/test.txt :/some/path/test.txt

9. Mode silencieux

En mode silencieux (option ‘-q’), la sortie scp serait supprimée, et désactiverait le compteur de progression ainsi que les messages d’avertissement et de diagnostic.

$ scp -vCq ~/test.txt :/some/path/test.txt

10. Spécifier le fichier d’identité

Lorsque vous utilisez une authentification basée sur la clé (sans mot de passe), vous auriez besoin de spécifier le fichier d’identité qui contient la clé privée. Cette option est directement passée à la commande ssh et fonctionne de la même manière.

$ scp -vCq -i private_key.pem ~/test.txt :/some/path/test.txt

11. Utiliser un fichier ssh_config différent

Utiliser l’option ‘-F’ pour spécifier un fichier ssh_config différent.

$ scp -vC -F /home/user/my_ssh_config ~/test.txt :/some/path/test.txt

12. Utiliser un chiffrement différent

Scp utilise par défaut le chiffrement/chiffrement AES. Parfois, vous pouvez vouloir utiliser un chiffrement différent. L’utilisation d’un chiffrement différent peut accélérer le processus de transfert. Par exemple, blowfish et arcfour sont connus pour être plus rapides que AES (mais moins sécurisés).

$ scp -c blowfish -C ~/local_file.txt :/remote/path/file.txt

Dans l’exemple ci-dessus, nous utilisons le chiffrement blowfish ainsi que la compression. Cela peut donner une augmentation significative de la vitesse en fonction de la bande passante disponible.

Résumé

Bien que scp soit très efficace pour transférer des fichiers de manière sécurisée, il manque de fonctionnalités nécessaires à un outil de synchronisation de fichiers. Tout ce qu’il peut faire est de copier coller tous les fichiers mentionnés d’un emplacement à un autre.

Un outil plus puissant est Rsync qui a non seulement toutes les fonctions de scp mais ajoute plus de fonctionnalités pour synchroniser intelligemment les fichiers sur 2 hôtes. Par exemple, il peut vérifier et télécharger uniquement les fichiers modifiés, ignorer les fichiers existants, etc.

.