15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
28.10.2024

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/destination

Dé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 600
  • Confirmez que le démon SSH autorise l’authentification par clé (PubkeyAuthentication 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 status ou iptables -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 rsync avec --bwlimit pour é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éSCPrsyncSFTP
    Facilité d’utilisation⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    Transferts delta
    Synchronisation de répertoires✅ (récursif)✅ (avec --delete)✅ (manuel)
    Mode interactif
    Automatisation✅ (avec scripts)
    Efficacité de la bande passanteFaibleÉlevéeFaible
    Idéal pourTransferts ponctuels rapidesSauvegardes & synchronisationNavigation 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 :

    1. Désactiver l’authentification par mot de passe — Utilisez exclusivement des clés SSH et définissez PasswordAuthentication no dans /etc/ssh/sshd_config
    2. Changer le port SSH par défaut — S’éloigner du port 22 réduit considérablement les tentatives de force brute automatisées
    3. Utiliser fail2ban — Bannir automatiquement les IP qui échouent répétitivement à l’authentification
    4. Restreindre l’accès SSH par IP — Utilisez des règles de pare-feu ou des directives AllowUsers pour limiter les personnes pouvant se connecter
    5. Maintenir SSH à jour — Mettez régulièrement à jour OpenSSH pour corriger les vulnérabilités connues
    6. Utiliser des algorithmes de clé robustes — Préférez ed25519 ou rsa-4096 aux algorithmes plus anciens et plus faibles
    7. 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.

    15%

    Économisez 15% sur tous les services d'hébergement

    Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

    Utilisez le code :

    Skills
    Commencer