Copier des fichiers via SSH : Guide complet sur SCP, rsync et SFTP
SSH (Secure Shell) est l’épine dorsale de la gestion sécurisée des serveurs à distance. Que vous soyez un développeur déployant du code, un administrateur système gérant une infrastructure, ou un utilisateur avancé maintenant un environnement VPS Hosting, le transfert sécurisé de fichiers entre machines est une tâche que vous effectuerez constamment.
Ce guide complet couvre toutes les principales méthodes de copie de fichiers via SSH — notamment SCP, rsync, SFTP et l’automatisation par clé — avec une syntaxe réelle, des exemples pratiques et des conseils d’experts pour vous aider à travailler plus rapidement et de manière plus sécurisée.
Pourquoi utiliser SSH pour les transferts de fichiers ?
Avant de plonger dans les outils, il est utile de comprendre pourquoi le transfert de fichiers basé sur SSH est la norme industrielle pour les administrateurs de serveurs et les développeurs.
- Chiffrement de bout en bout : Chaque octet de données — y compris les identifiants, les commandes et le contenu des fichiers — est chiffré en transit à l’aide d’algorithmes cryptographiques modernes. Cela rend les transferts SSH immunisés contre l’espionnage de paquets et les attaques de type man-in-the-middle.
- Aucun logiciel supplémentaire requis : SSH est préinstallé sur pratiquement tous les systèmes Linux/Unix et est nativement disponible sur Windows 10+ et macOS.
- Polyvalence : Une seule connexion SSH peut gérer des sessions shell interactives, des transferts de fichiers, la redirection de ports et des scripts automatisés.
- Compatible avec l’automatisation : SSH s’intègre parfaitement aux tâches cron, aux pipelines CI/CD et aux scripts de sauvegarde, permettant des transferts de fichiers entièrement automatisés et sans mot de passe.
- Fiabilité : Les connexions SSH gèrent les interruptions réseau de manière élégante, surtout lorsqu’elles sont combinées avec des outils comme
rsync.
Méthode 1 : Copier des fichiers avec SCP (Secure Copy Protocol)
SCP est l’outil le plus simple et le plus largement utilisé pour les transferts de fichiers ponctuels via SSH. Il fonctionne en exploitant votre connexion SSH existante pour copier des fichiers de manière sécurisée entre les hôtes.
Syntaxe de base de SCP
scp [options] [source] [destination]Exemple 1 : Envoyer un fichier de la machine locale vers le serveur distant
scp /path/to/local/file username@remote_host:/path/to/remote/destinationDécomposition :
/path/to/local/file — le fichier que vous souhaitez transférer depuis votre machine locale
username@remote_host — votre nom d’utilisateur SSH et le nom d’hôte ou l’adresse IP du serveur
/path/to/remote/destination — le répertoire cible ou le chemin du fichier sur le serveur distant
Exemple 2 : Télécharger un fichier du serveur distant vers la machine locale
scp username@remote_host:/path/to/remote/file /path/to/local/destination
Il suffit d’inverser la source et la destination pour récupérer un fichier du serveur vers votre machine locale.
Exemple 3 : Copier un répertoire entier de manière récursive
scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
L’option -r indique à SCP de copier le répertoire et tout son contenu de manière récursive, y compris les sous-répertoires imbriqués.
Options utiles de SCP
Option
Description
-P [port]
Spécifier un port SSH personnalisé (remarque : majuscule -P, contrairement au -p minuscule de SSH)
-C
Activer la compression pour des transferts plus rapides sur les connexions lentes
-i [identity_file]
Utiliser une clé privée SSH spécifique pour l’authentification
-l [limit]
Limiter l’utilisation de la bande passante en Kbit/s
-q
Mode silencieux — supprime l’affichage de la progression
-v
Mode verbeux — utile pour déboguer les problèmes de connexion
Quand utiliser SCP
SCP est idéal pour les transferts de fichiers rapides et ponctuels où la simplicité est primordiale. Il ne nécessite aucune configuration et fonctionne immédiatement sur tout système avec SSH installé. Cependant, pour les grands répertoires ou les transferts répétés, rsync est un choix nettement meilleur.
Méthode 2 : Copier des fichiers avec rsync
rsync est le choix des professionnels pour la synchronisation et le transfert de fichiers via SSH. Sa fonctionnalité phare est le transfert delta : au lieu de copier des fichiers entiers, rsync analyse la source et la destination et ne transfère que les parties modifiées. Cela permet d’économiser énormément de temps et de bande passante lorsqu’on traite de grands fichiers ou des répertoires fréquemment mis à jour.
Syntaxe de base de rsync
rsync [options] [source] [destination]
Exemple 1 : Envoyer un fichier de la machine locale vers le serveur distant
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination
Exemple 2 : Synchroniser un répertoire entier vers un serveur distant
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
> Important : Notez le slash final / après le répertoire source. Avec un slash final, rsync copie le *contenu* du répertoire. Sans lui, rsync copie le répertoire lui-même en tant que sous-répertoire de la destination.
Exemple 3 : Mettre en miroir un répertoire (supprimer les fichiers retirés de la source)
rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
L’option --delete garantit que les fichiers supprimés de la source sont également supprimés de la destination, maintenant les deux emplacements parfaitement synchronisés.
Exemple 4 : Utiliser un port SSH personnalisé
rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
Options utiles de rsync
Option
Description
-a
Mode archive : préserve les permissions, les horodatages, les liens symboliques et la propriété
-v
Verbeux : affiche la progression fichier par fichier pendant le transfert
-z
Compression : réduit les données transférées sur le réseau
--delete
Supprime les fichiers à la destination qui n’existent plus à la source
--progress
Affiche la progression en temps réel pour chaque fichier
--exclude
Exclure des fichiers ou des motifs spécifiques (ex. : --exclude '*.log')
-n ou --dry-run
Simuler le transfert sans réellement copier quoi que ce soit
-e "ssh -p [port]"
Spécifier un port SSH personnalisé
--bwlimit=[KB/s]
Limiter la vitesse de transfert pour éviter de saturer votre connexion
Quand utiliser rsync
Utilisez rsync pour les sauvegardes, les déploiements et toute tâche de synchronisation récurrente. Il est particulièrement puissant pour gérer de grandes bases de code, des bibliothèques multimédias ou des exports de bases de données sur un Serveur Dédié où l’efficacité de la bande passante et l’intégrité des données sont essentielles.
Méthode 3 : Copier des fichiers entre deux serveurs distants
Une capacité moins connue mais extrêmement utile de SCP et rsync est la possibilité de transférer des fichiers directement entre deux serveurs distants — sans faire transiter les données par votre machine locale. Cela est inestimable lors de la migration de serveurs ou de la synchronisation de données entre des instances cloud.
Copier des fichiers entre deux serveurs distants avec SCP
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
Copier des fichiers entre deux serveurs distants avec rsync
rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/
> Remarque : Pour que les transferts de serveur à serveur fonctionnent, le serveur source doit pouvoir établir une connexion SSH vers le serveur de destination. Vous devrez peut-être configurer des clés SSH sur le serveur source ou utiliser le transfert d’agent SSH (ssh -A).
Transfert de serveur à serveur via le tunneling SSH (méthode alternative)
Si le SSH direct de serveur à serveur n’est pas possible en raison de restrictions de pare-feu, vous pouvez acheminer le transfert via votre machine locale en utilisant tar et ssh :
ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"
Cela diffuse une archive compressée depuis le serveur 1 directement vers le serveur 2 via votre session de terminal local.
Méthode 4 : Copier des fichiers avec SFTP (SSH File Transfer Protocol)
SFTP offre une expérience interactive similaire à FTP via une connexion SSH chiffrée. Contrairement à SCP, qui est un outil à commande unique, SFTP ouvre une session persistante où vous pouvez parcourir des répertoires, envoyer, télécharger, renommer et supprimer des fichiers de manière interactive.
Démarrer une session SFTP
sftp username@remote_host
Vous serez dirigé vers une invite SFTP (sftp>), depuis laquelle vous pouvez exécuter les commandes suivantes :
Commandes SFTP essentielles
Commande
Description
ls
Lister les fichiers dans le répertoire distant actuel
lls
Lister les fichiers dans le répertoire local actuel
cd /remote/path
Changer le répertoire distant
lcd /local/path
Changer le répertoire local
put /local/file /remote/destination
Envoyer un fichier vers le serveur distant
get /remote/file /local/destination
Télécharger un fichier depuis le serveur distant
mput *.txt
Envoyer plusieurs fichiers correspondant à un motif
mget *.log
Télécharger plusieurs fichiers correspondant à un motif
mkdir /remote/newdir
Créer un répertoire sur le serveur distant
rm /remote/file
Supprimer un fichier sur le serveur distant
exit ou quit
Fermer la session SFTP
Se connecter à un port SSH personnalisé via SFTP
sftp -P 2222 username@remote_host
Quand utiliser SFTP
SFTP est mieux adapté aux sessions de gestion de fichiers interactives — par exemple, lorsque vous devez parcourir une structure de répertoires distants, télécharger sélectivement des fichiers journaux ou envoyer des fichiers de configuration vers un serveur web. De nombreux clients GUI (tels que FileZilla, Cyberduck et WinSCP) utilisent SFTP comme protocole sous-jacent, le rendant accessible aux utilisateurs non techniques également.
Méthode 5 : Automatiser les transferts de fichiers avec l’authentification par clé SSH
Saisir manuellement un mot de passe pour chaque transfert de fichier est inefficace et incompatible avec l’automatisation. L’authentification par clé SSH résout ce problème en permettant des connexions sans mot de passe, cryptographiquement sécurisées — un prérequis pour tout flux de travail de sauvegarde ou de déploiement automatisé.
Étape 1 : Générer une paire de clés SSH
Sur votre machine locale, exécutez :
ssh-keygen -t ed25519 -C "your_email@example.com"
> Remarque : ed25519 est l’algorithme moderne recommandé. Utilisez -t rsa -b 4096 si vous avez besoin de compatibilité avec des systèmes plus anciens.
Suivez les instructions pour enregistrer la clé (emplacement par défaut : ~/.ssh/id_ed25519) et définissez éventuellement une phrase de passe pour une sécurité accrue.
Étape 2 : Copier votre clé publique vers le serveur distant
ssh-copy-id username@remote_host
Cela ajoute votre clé publique au fichier ~/.ssh/authorized_keys sur le serveur distant. Vous serez invité à entrer votre mot de passe une dernière fois.
Si ssh-copy-id n’est pas disponible, vous pouvez le faire manuellement :
cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Étape 3 : Tester l’authentification sans mot de passe
ssh username@remote_host
Si vous vous connectez sans être invité à entrer un mot de passe, l’authentification par clé fonctionne correctement.
Étape 4 : Automatiser les transferts avec un script shell
Avec SSH sans mot de passe configuré, vous pouvez maintenant automatiser les transferts de fichiers dans des tâches cron ou des scripts :
#!/bin/bash
# Daily backup script
rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/
Ajoutez ceci à votre crontab (crontab -e) pour une exécution nocturne :
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Résolution des problèmes courants de transfert de fichiers SSH
Même les administrateurs expérimentés rencontrent des problèmes. Voici les problèmes les plus courants et leurs solutions :
Permission refusée (publickey)
Vérifiez que la clé publique est correctement ajoutée à ~/.ssh/authorized_keys sur le serveur distant
Vérifiez que ~/.ssh a les permissions 700 et que authorized_keys a les permissions 600PubkeyAuthentication yes dans /etc/ssh/sshd_config)Connexion refusée
- Vérifiez que le service SSH est en cours d’exécution :
systemctl status sshd - Vérifiez que le bon port est utilisé
- Examinez les règles du pare-feu :
ufw statusouiptables -L
La vitesse de transfert est lente
- Activez la compression : ajoutez
-Cà SCP ou-zà rsync - Utilisez un chiffrement plus rapide :
ssh -c aes128-ctr(moins sécurisé mais plus rapide sur les liens à haute latence) - Pour les grands transferts, envisagez
rsyncavec--bwlimitpour éviter de saturer votre réseau
Échec de la vérification de la clé d’hôte
- L’empreinte SSH du serveur distant a changé (cela pourrait indiquer un problème de sécurité ou une reconstruction du serveur)
- Supprimez l’ancienne clé :
ssh-keygen -R remote_host - Reconnectez-vous et vérifiez la nouvelle empreinte avant de l’accepter
Choisir le bon outil : SCP vs. rsync vs. SFTP
| Fonctionnalité | SCP | rsync | SFTP |
|---|---|---|---|
| Facilité d’utilisation | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Transferts delta | ❌ | ✅ | ❌ |
| Synchronisation de répertoires | ✅ (récursif) | ✅ (avec --delete) | ✅ (manuel) |
| Mode interactif | ❌ | ❌ | ✅ |
| Automatisation | ✅ | ✅ | ✅ (avec scripts) |
| Efficacité de la bande passante | Faible | Élevée | Faible |
| Idéal pour | Transferts ponctuels rapides | Sauvegardes & synchronisation | Navigation interactive |
Sécuriser vos transferts de fichiers SSH : bonnes pratiques
Quel que soit l’outil que vous utilisez, suivez ces bonnes pratiques de sécurité pour protéger vos serveurs et vos données :
- Désactiver l’authentification par mot de passe — Utilisez exclusivement des clés SSH et définissez
PasswordAuthentication nodans/etc/ssh/sshd_config - Changer le port SSH par défaut — S’éloigner du port 22 réduit considérablement les tentatives de force brute automatisées
- Utiliser
fail2ban— Bannir automatiquement les IP qui échouent répétitivement à l’authentification - Restreindre l’accès SSH par IP — Utilisez des règles de pare-feu ou des directives
AllowUserspour limiter les personnes pouvant se connecter - Maintenir SSH à jour — Mettez régulièrement à jour OpenSSH pour corriger les vulnérabilités connues
- Utiliser des algorithmes de clé robustes — Préférez
ed25519oursa-4096aux algorithmes plus anciens et plus faibles - Sécuriser vos applications web — Associez la sécurité SSH à un Certificat SSL pour chiffrer tout le trafic vers vos services web
Questions fréquemment posées
Quelle est la différence entre SCP et SFTP ?
SCP est un outil en ligne de commande non interactif conçu pour des transferts de fichiers rapides en une seule commande. SFTP est un protocole interactif qui vous permet de parcourir, gérer, envoyer et télécharger des fichiers dans une interface basée sur des sessions. Les deux utilisent SSH pour le chiffrement.
Puis-je utiliser rsync sans SSH ?
Oui — rsync dispose de son propre mode démon qui fonctionne sans SSH, mais il est moins sécurisé. Pour tout transfert exposé à Internet, utilisez toujours rsync via SSH (rsync -e ssh).
Comment transférer des fichiers si mon serveur utilise un port SSH non standard ?
Utilisez l’option -P avec SCP (scp -P 2222) ou l’option -e "ssh -p 2222" avec rsync. Pour SFTP, utilisez sftp -P 2222.
SCP est-il obsolète ?
Les développeurs d’OpenSSH ont noté que le protocole sous-jacent de SCP présente des limitations et recommandent d’utiliser SFTP ou rsync pour les nouveaux flux de travail. Cependant, SCP reste largement disponible et fonctionnel sur pratiquement tous les systèmes.
Conclusion
Maîtriser le transfert de fichiers basé sur SSH est une compétence essentielle pour quiconque gère des serveurs, déploie des applications ou maintient une infrastructure distante. Chaque outil a sa place :
- SCP est votre outil de prédilection pour des transferts rapides, simples et ponctuels
- rsync est indispensable pour les sauvegardes, les déploiements et la synchronisation efficace de grands ensembles de données
- SFTP excelle dans les sessions interactives où vous devez parcourir et gérer des fichiers à la volée
Combiner ces outils avec l’authentification par clé SSH et de solides pratiques de sécurité vous offre un flux de travail de transfert de fichiers robuste, automatisé et sécurisé, qui s’adapte d’un simple compte d’Hébergement Web Mutualisé jusqu’aux architectures multi-serveurs complexes sur des Serveurs Dédiés.
Si vous recherchez un environnement d’hébergement fiable et haute performance pour mettre ces compétences en pratique, explorez les offres de VPS Hosting d’AlexHost — conçues pour les développeurs et les administrateurs système qui exigent un accès root complet, un stockage SSD et une connectivité réseau de niveau entreprise.
