Copier des fichiers via SSH
SSH (Secure Shell) est un protocole largement utilisé pour accéder à des serveurs distants et les gérer en toute sécurité au moyen d’une connexion cryptée. L’une des tâches les plus courantes avec SSH consiste à copier des fichiers entre votre machine locale et un serveur distant ou entre deux serveurs distants.
Dans cet article, nous allons explorer les différentes façons de copier des fichiers via SSH, notamment en utilisant SCP (Secure Copy Protocol), rsync et d’autres méthodes.
Pourquoi utiliser SSH pour les transferts de fichiers ?
L’utilisation de SSH pour transférer des fichiers présente plusieurs avantages :
- Sécurité : SSH crypte à la fois la commande et les données pendant la transmission, ce qui garantit la protection des informations sensibles.
- Efficacité : SSH est rapide et fiable, ce qui vous permet de transférer des fichiers directement entre les systèmes sans avoir à vous connecter séparément.
- Automatisation : SSH peut être intégré dans des scripts, ce qui permet d’automatiser le transfert de fichiers entre des serveurs ou des machines locales.
1. Copier des fichiers avec SCP (Secure Copy Protocol)
SCP est l’un des outils les plus populaires pour copier des fichiers en toute sécurité via SSH. Il vous permet de transférer des fichiers d’une machine locale vers un serveur distant, d’un serveur distant vers votre machine locale ou entre deux serveurs distants.
Syntaxe SCP de base :
Exemple 1 : Copier un fichier d’une machine locale vers un serveur distant
Dans cet exemple :
- /chemin/vers/fichier local est le chemin d’accès au fichier sur votre machine locale.
- nom_d’utilisateur@hôte_distant est l’utilisateur SSH et le nom d’hôte ou l’adresse IP du serveur distant.
- /chemin/vers/remote/destination est le chemin où le fichier sera stocké sur le serveur distant.
Exemple 2 : Copier un fichier d’un serveur distant vers une machine locale
Dans ce cas, le fichier est transféré du serveur distant vers la machine locale.
Exemple 3 : Copier un répertoire de manière récursive
Pour copier un répertoire entier, utilisez l’option -r (récursif) :
Cette opération transfère le répertoire et tout son contenu vers le serveur distant.
Options SCP utiles :
- -P [port]: Spécifiez le port SSH s’il est différent du port par défaut (22).
- -C : Active la compression pendant le transfert pour une copie plus rapide des fichiers.
- -i [fichier_identite]: Utiliser une clé privée SSH spécifique pour l’authentification.
2. Copier des fichiers avec rsync
rsync est un autre outil puissant pour le transfert de fichiers via SSH. Il est souvent préféré pour les transferts de fichiers volumineux ou répétitifs, car il ne copie que les modifications entre la source et la destination, ce qui permet d’économiser du temps et de la bande passante.
Syntaxe de base de rsync :
Exemple 1 : Copier un fichier d’une machine locale vers un serveur distant
Exemple 2 : Copier un répertoire avec rsync
Options rsync utiles :
- -a : Mode archive, qui préserve les liens symboliques, les permissions, les horodatages et la propriété des fichiers.
- -v : Mode verbeux pour afficher la progression du transfert.
- -z : Active la compression pour accélérer le transfert.
- –supprimer : Supprime les fichiers de la destination qui n’existent plus dans la source.
- -e “ssh -p [port]” : Spécifie un port SSH personnalisé.
3. Copie de fichiers entre deux serveurs distants
En utilisant SSH, vous pouvez également copier des fichiers directement entre deux serveurs distants. SCP et rsync prennent tous deux en charge cette fonction.
Exemple 1 : Copier des fichiers entre deux serveurs distants avec SCP
Exemple 2 : Copier des fichiers entre deux serveurs distants avec rsync
Cette méthode est particulièrement utile pour transférer des fichiers entre serveurs sans avoir à les télécharger d’abord sur votre machine locale.
4. Copier des fichiers avec SFTP (SSH File Transfer Protocol)
SFTP est une autre méthode permettant de transférer des fichiers en toute sécurité via SSH. Elle est similaire à FTP, mais utilise SSH pour assurer le cryptage. SFTP est généralement utilisé dans le cadre de sessions interactives, mais il peut également être automatisé.
Utiliser SFTP :
Pour démarrer une session SFTP, exécutez la commande suivante :
Une fois dans l’invite SFTP, vous pouvez utiliser des commandes telles que :
- put /path/to/local/file /path/to/remote/destination : Téléchargez un fichier de votre machine locale vers le serveur distant.
- get /chemin/vers/remote/fichier /chemin/vers/local/destination : Télécharger un fichier du serveur distant vers votre machine locale.
- mput et mget : Pour télécharger plusieurs fichiers à la fois.
Pour quitter la session SFTP, tapez exit ou quit.
5. Automatiser les transferts de fichiers avec des clés SSH
Pour les transferts de fichiers répétés, il est judicieux de mettre en place une authentification basée sur une clé SSH afin de ne pas avoir à saisir votre mot de passe à chaque fois.
Étape 1 : Générer une paire de clés SSH (si vous n’en avez pas)
Sur votre machine locale, exécutez :
Cela générera une paire de clés publique et privée.
Étape 2 : Copier la clé publique sur le serveur distant
Utilisez la commande suivante pour copier votre clé publique sur le serveur distant :
Vous pouvez désormais vous connecter et transférer des fichiers sans avoir à saisir de mot de passe, ce qui facilite l’automatisation.
Conclusion
La copie de fichiers via SSH est un moyen sûr et efficace de transférer des données entre votre machine locale et un serveur distant ou entre deux serveurs distants. Que vous utilisiez SCP, rsync ou SFTP, SSH offre des transferts de fichiers cryptés qui protègent vos données contre l’interception. Les outils tels que SCP sont simples pour les transferts ponctuels, tandis que rsync est idéal pour les tâches de synchronisation continues, en particulier pour les fichiers ou répertoires volumineux. La compréhension de ces outils vous aidera à gérer plus efficacement les transferts de fichiers, en particulier dans un environnement de serveur distant.