Comment télécharger des fichiers avec FTP : un guide technique complet
Le protocole de transfert de fichiers (FTP) est un protocole réseau fonctionnant sur un modèle client-serveur qui permet le transfert bidirectionnel de fichiers entre une machine locale et un hôte distant via TCP/IP. Il utilise deux canaux distincts — un canal de contrôle (port 21) pour les commandes et un canal de données (port 20 ou un port éphémère négocié) pour les charges utiles de fichiers réelles, ce qui est un détail architectural fondamental qui explique la plupart des problèmes de pare-feu et de mode passif rencontrés par les praticiens.
Pour toute personne gérant un serveur web, déployant du code d’application ou administrant un environnement VPS Hosting, maîtriser FTP et ses successeurs sécurisés est indispensable. Ce guide couvre l’ensemble du flux de travail : sélection du protocole, configuration du client, navigation dans les répertoires, transferts par lots, gestion des permissions et dépannage de niveau production — y compris les cas particuliers que les tutoriels génériques omettent.
Comprendre l’architecture FTP et les variantes de protocole
Avant de toucher à un client, comprendre quelle variante de protocole vous utilisez réellement permet d’éviter des heures de débogage par la suite.
Mode actif vs. mode passif
La conception à double canal de FTP crée une division comportementale critique :
- Mode actif : Le serveur initie la connexion de données vers le client sur un port spécifié par le client. Cela échoue presque toujours à travers des routeurs NAT ou des pare-feux stricts car la connexion entrante depuis le serveur est bloquée.
- Mode passif (PASV) : Le client initie les deux connexions. Le serveur ouvre un port élevé aléatoire et indique au client de s’y connecter. C’est la valeur par défaut correcte pour pratiquement tous les déploiements modernes.
La plupart des échecs de connexion en production proviennent du mode actif utilisé contre un serveur protégé par un pare-feu, ou d’un serveur dont la plage de ports passifs n’est pas ouverte dans ses propres règles de pare-feu.
Tableau de comparaison des protocoles
| Fonctionnalité | FTP | FTPS (FTP over TLS) | SFTP (SSH File Transfer) | SCP |
|---|---|---|---|---|
| — | — | — | — | — |
| Chiffrement | Aucun | TLS/SSL | SSH | SSH |
| Port du canal de contrôle | 21 | 21 (explicite) / 990 (implicite) | 22 | 22 |
| Canal de données | Séparé (20/éphémère) | Séparé (encapsulé TLS) | Canal unique multiplexé | Canal unique |
| Compatibilité avec les pare-feux | Mauvaise | Mauvaise | Excellente | Excellente |
| Reprise des transferts | Oui (commande REST) | Oui | Oui | Non |
| Listage des répertoires | Oui | Oui | Oui | Non |
| Certificat requis | Non | Oui (côté serveur minimum) | Non (clé ou mot de passe) | Non |
| Recommandé pour la production | Non | Situationnel | Oui | Oui (copie en masse) |
La conclusion pratique : Utilisez SFTP par défaut. Utilisez FTPS uniquement lorsqu’un système hérité l’exige explicitement. Évitez complètement le FTP simple sur tout serveur exposé à Internet — les identifiants et le contenu des fichiers transitent en clair et sont facilement interceptés.
Prérequis et collecte des identifiants
Avant d’ouvrir un client, collectez les informations suivantes auprès de votre hébergeur ou de l’administrateur du serveur :
- Nom d’hôte ou adresse IP — par ex.,
ftp.yourdomain.comou203.0.113.45 - Protocole — FTP, FTPS (explicite ou implicite), ou SFTP
- Port — 21 pour FTP/FTPS-explicite, 990 pour FTPS-implicite, 22 pour SFTP
- Nom d’utilisateur et mot de passe — ou une clé privée SSH pour l’authentification SFTP par clé
- Chemin racine distant — généralement
/public_html,/var/www/html, ou/home/username/public_htmlselon la pile serveur
Si vous travaillez avec un VPS avec cPanel, vos identifiants FTP sont créés sous cPanel > Comptes FTP, où vous pouvez également limiter chaque compte à un répertoire spécifique — une pratique de sécurité qui limite les dommages en cas de compromission des identifiants.
Étape 1 : Installer et configurer FileZilla
FileZilla reste le client FTP multiplateforme le plus largement déployé grâce à sa prise en charge de FTP, FTPS et SFTP, son gestionnaire de sites intégré et sa file de transfert avec capacité de reprise.
Téléchargement : Obtenez FileZilla Client (pas Server) depuis filezilla-project.org. Vérifiez la somme de contrôle SHA-512 publiée sur la page de téléchargement avant d’exécuter le programme d’installation — c’est une étape que la plupart des tutoriels ignorent, mais les attaques sur la chaîne d’approvisionnement des utilitaires populaires sont documentées.
Après l’installation, ouvrez FileZilla et accédez à Édition > Paramètres > Transferts > Types de fichiers. Définissez le type de transfert par défaut sur Binaire, pas Auto. La détection automatique peut corrompre silencieusement les fichiers binaires (images, archives, exécutables) en appliquant une conversion de fin de ligne lorsque l’heuristique classe mal le fichier.
Étape 2 : Créer une entrée dans le gestionnaire de sites
L’utilisation de la barre de Connexion rapide est acceptable pour les tâches ponctuelles, mais elle stocke les identifiants en texte clair dans recentservers.xml. Pour toute connexion récurrente, utilisez plutôt le gestionnaire de sites.
- Ouvrez Fichier > Gestionnaire de sites (ou appuyez sur
Ctrl+S). - Cliquez sur Nouveau site et donnez-lui un nom descriptif.
- Configurez l’onglet Général :
- Protocole : Sélectionnez SFTP pour les serveurs basés sur SSH, ou FTP avec TLS explicite pour FTPS.
- Hôte : Entrez le nom d’hôte ou l’IP du serveur.
- Port : Laissez vide pour utiliser le port par défaut du protocole, ou spécifiez-le explicitement.
- Type d’authentification : Choisissez Normal pour l’authentification par mot de passe, ou Fichier de clé pour SFTP par clé SSH.
- Utilisateur / Mot de passe : Entrez les identifiants.
- Dans l’onglet Avancé, définissez le Répertoire distant par défaut sur votre racine web (par ex.,
/public_html) et le Répertoire local par défaut sur votre dossier de projet. Cela élimine le temps de navigation à chaque session. - Cliquez sur Connexion.
Pour SFTP avec authentification par clé — l’approche recommandée pour les Serveurs Dédiés — pointez le champ Fichier de clé vers votre clé privée (format .pem ou .ppk). FileZilla utilise son propre format de clé ; convertissez les clés OpenSSH avec PuTTYgen si nécessaire.
Étape 3 : Naviguer dans l’interface à double panneau
Une fois connecté, FileZilla présente une vue partagée :
- Panneau gauche (Site local) : Votre système de fichiers local. Naviguez jusqu’au répertoire contenant les fichiers que vous souhaitez téléverser.
- Panneau droit (Site distant) : Le système de fichiers du serveur. Naviguez jusqu’au répertoire cible — généralement
/public_htmlpour le contenu web. - Panneaux de file en bas : Affichent les transferts en attente, les transferts échoués et les transferts réussis avec horodatages et nombre d’octets.
L’arborescence de répertoires en haut de chaque panneau et la liste de fichiers en dessous sont indépendantes — cliquer sur un dossier dans l’arborescence ne fait pas défiler automatiquement la liste de fichiers. Cela surprend les nouveaux utilisateurs qui se demandent pourquoi leur liste de fichiers semble vide.
Étape 4 : Téléverser des fichiers
Fichier unique ou sélection manuelle
Faites un clic droit sur n’importe quel fichier dans le panneau local et sélectionnez Envoyer, ou faites-le glisser vers le panneau distant. Pour une sélection multi-fichiers, utilisez Ctrl+Click (Windows/Linux) ou Cmd+Click (macOS) pour une sélection non contiguë, ou Shift+Click pour une plage.
Téléversement par glisser-déposer
Sélectionnez des fichiers dans le panneau local et faites-les glisser vers le dossier cible dans le panneau distant. FileZilla met tous les éléments en file d’attente et commence le transfert immédiatement.
Téléversement de répertoire synchronisé
Pour déployer un répertoire de projet entier, faites un clic droit sur le dossier local et choisissez Envoyer. FileZilla téléverse récursivement tout le contenu, en préservant la structure de répertoires côté distant.
Surveillance de la progression des transferts
La file de transfert en bas affiche :
- Nom et taille du fichier
- Vitesse de transfert (octets/seconde)
- Temps écoulé et estimé
- Chemin de destination distant
Un transfert qui se termine mais affiche 0 octet transféré est un échec silencieux — le fichier a été créé mais est vide. Cela indique généralement un problème de permissions sur le répertoire de destination ou une violation de quota disque sur le serveur.
Étape 5 : Définir les permissions de fichiers correctes après le téléversement
C’est l’étape la plus souvent ignorée et la source d’un pourcentage significatif des tickets de support « mon site web est cassé après le téléversement ».
Après le téléversement, faites un clic droit sur un fichier ou un répertoire dans le panneau distant et sélectionnez Permissions du fichier. La représentation numérique correspond directement aux octets de permissions Unix :
- 644 — Standard pour les fichiers web (lecture/écriture pour le propriétaire, lecture seule pour le groupe/autres)
- 755 — Standard pour les répertoires et les scripts exécutables
- 600 — Fichiers privés qui ne doivent pas être accessibles via le web (par ex., fichiers de configuration avec des identifiants)
- 777 — Ne jamais utiliser en production ; accorde un accès en écriture à tous
Pour une correction récursive des permissions sur un arbre de répertoires téléversé entier, cochez Inclure les sous-répertoires et appliquez 644 aux fichiers et 755 aux répertoires séparément. FileZilla ne différencie pas les fichiers des répertoires en un seul passage récursif — vous devez l’exécuter deux fois avec le filtre approprié sélectionné.
Alternativement, après connexion via SSH, corrigez les permissions en masse :
find /public_html -type f -exec chmod 644 {} ;
find /public_html -type d -exec chmod 755 {} ;Étape 6 : Vérifier le téléversement
Ne supposez pas qu’une file de transfert terminée signifie que le déploiement est correct. Effectuez ces étapes de vérification :
- Dans FileZilla : Actualisez le répertoire distant (
F5ou clic droit > Actualiser) et confirmez que les tailles de fichiers correspondent aux originaux locaux. Une différence de taille indique un transfert tronqué. - Via le navigateur : Chargez la page mise à jour et effectuez un rechargement forcé (
Ctrl+Shift+R) pour contourner le cache du navigateur. - Via SSH : Pour une vérification côté serveur, comparez les sommes de contrôle :
md5sum /public_html/index.htmlComparez le résultat avec la somme de contrôle du fichier local. Une différence signifie que le fichier a été corrompu pendant le transit — rare avec SFTP mais possible avec FTP simple sur des connexions instables.
Techniques avancées et modèles de production
Reprise des transferts échoués
Si le transfert d’un fichier volumineux est interrompu, FileZilla utilise la commande FTP REST (ou l’équivalent SFTP) pour reprendre depuis le dernier décalage d’octet confirmé. Dans l’onglet Transferts échoués, faites un clic droit sur l’élément échoué et sélectionnez Réinitialiser et remettre en file les fichiers échoués, puis relancez la file. Cela fonctionne de manière fiable avec SFTP ; la reprise FTP simple dépend de la prise en charge de la commande REST par le serveur.
Exclusion de fichiers du téléversement
Les Filtres de noms de fichiers de FileZilla sous Édition > Filtres de noms de fichiers vous permettent de définir des règles pour exclure les fichiers correspondant à des modèles — par exemple, exclure les répertoires .git, node_modules, .DS_Store, ou les fichiers .env d’un téléversement accidentel. C’est une protection critique : téléverser un fichier .env contenant des identifiants de base de données ou des clés API dans une racine web publique est un incident de sécurité grave.
Transferts FTP scriptés/automatisés
Pour les pipelines CI/CD ou les déploiements planifiés, l’interface graphique de FileZilla n’est pas appropriée. Utilisez plutôt l’utilitaire en ligne de commande lftp :
lftp -u username,password sftp://your-server.com << 'EOF'
set sftp:auto-confirm yes
mirror --reverse --delete --verbose /local/project/ /public_html/
EOFLe drapeau --reverse téléverse (local vers distant), --delete supprime les fichiers distants absents localement (à utiliser avec précaution), et --verbose enregistre chaque opération. Ce modèle convient aux déploiements automatisés sur des environnements VPS Hosting où l’accès SSH est disponible.
Utilisation de rsync via SSH comme alternative à FTP
Pour les déploiements volumineux ou les synchronisations incrémentielles, rsync via SSH est considérablement plus efficace que FTP car il ne transfère que les blocs modifiés dans les fichiers, et non les fichiers entiers :
rsync -avz --progress --delete /local/project/ user@your-server.com:/public_html/-a — Mode archive (préserve les permissions, horodatages, liens symboliques)
-v — Sortie détaillée
-z — Compresser les données pendant le transfert
--delete — Supprimer les fichiers distants supprimés localement
rsync nécessite un accès SSH et n’est pas disponible via les panneaux de contrôle d’hébergement mutualisé, mais c’est le bon outil pour tout environnement où vous contrôlez la pile serveur.
Dépannage des problèmes courants FTP et SFTP
Délai d’attente ou connexion refusée
Vérifiez que le nom d’hôte se résout correctement : nslookup ftp.yourdomain.comtelnet your-server.com 21 ou nc -zv your-server.com 22iptables -L ou ufw status indiquera si le port est autorisésystemctl status sshd530 Échec de l’authentification de connexion
- Confirmez que le nom d’utilisateur est exact — les noms d’utilisateur FTP sont sensibles à la casse sur les systèmes Linux
- Vérifiez que le compte n’est pas verrouillé :
passwd -S usernamesur le serveur - Consultez
/var/log/auth.logou/var/log/securepour la raison du rejet - Si vous utilisez cPanel, confirmez que le compte FTP n’a pas expiré ou n’a pas été suspendu
550 Permission refusée lors du téléversement
Le répertoire distant n’accorde pas d’accès en écriture à l’utilisateur FTP authentifié. Vérifiez la propriété et les permissions :
ls -la /public_html/Si le répertoire appartient à un autre utilisateur, ajustez soit la propriété (chown) soit accordez la permission d’écriture au groupe (chmod g+w). Sur l’hébergement mutualisé, cela est géré via le gestionnaire de fichiers du panneau de contrôle d’hébergement.
Échecs de connexion en mode passif
Si vous voyez « Impossible de récupérer la liste des répertoires » après une connexion réussie, la plage de ports passifs du serveur n’est pas accessible. Dans FileZilla, allez dans Édition > Paramètres > FTP > Mode passif et essayez Revenir au mode actif. Côté serveur, assurez-vous que la plage de ports passifs (généralement 49152–65534) est ouverte dans le pare-feu et correctement configurée dans les paramètres du démon FTP (par ex., pasv_min_port et pasv_max_port dans vsftpd.conf).
Corruption de transfert binaire vs. ASCII
Les fichiers PHP téléversés en mode ASCII depuis un client Windows peuvent avoir leurs fins de ligne Windows (rn) converties, ce qui peut casser certains analyseurs. Confirmez que FileZilla est réglé sur le mode Binaire sous Transfert > Type de transfert > Binaire.
Méthodes alternatives de téléversement
FTP n’est pas toujours le bon outil. Les alternatives suivantes méritent d’être connues :
Gestionnaire de fichiers cPanel / Plesk : Disponible via le panneau de contrôle web sur l’Hébergement Web Mutualisé et les Panneaux de contrôle VPS. Adapté aux petites modifications et aux téléversements de fichiers uniques. A une limite de taille de fichier de 2 Go dans la plupart des implémentations et n’est pas adapté aux transferts en masse.
SCP (Secure Copy) : Un outil de copie basé sur SSH simple et scriptable. Pas de capacité de reprise, pas de listage de répertoires, mais extrêmement fiable pour les transferts en une seule fois :
scp -r /local/project/ user@your-server.com:/public_html/Déploiement basé sur Git : Poussez vers un dépôt nu sur le serveur et utilisez un hook post-receive pour extraire les fichiers dans la racine web. C’est le modèle de déploiement le plus propre pour le code — il fournit un historique des versions, une capacité de retour arrière et élimine entièrement la gestion manuelle des fichiers.
Synchronisation de stockage objet / CDN : Pour les ressources statiques, la synchronisation vers un bucket compatible S3 et la diffusion via CDN est plus évolutive que le déploiement basé sur FTP et retire entièrement le serveur web du chemin de livraison des ressources statiques.
Matrice de décision rapide : Choisir la bonne méthode de transfert
| Scénario | Méthode recommandée |
|---|---|
| — | — |
| Modification ponctuelle de fichier sur hébergement mutualisé | Gestionnaire de fichiers cPanel |
| Déploiement régulier de site web, sans SSH | SFTP via FileZilla |
| Déploiement automatisé de pipeline CI/CD | `lftp` ou `rsync` via SSH |
| Fichier binaire volumineux, transfert unique | `scp` |
| Déploiement de code incrémentiel | `rsync` ou hook Git post-receive |
| Système hérité nécessitant FTP | FTPS (TLS explicite) minimum |
| Déploiement massif de ressources statiques | Synchronisation de stockage objet compatible S3 |
Liste de contrôle technique clé avant la mise en production
- Protocole : SFTP ou FTPS uniquement — jamais FTP simple sur un serveur de production
- Identifiants : Utilisez des comptes FTP/SFTP dédiés limités au répertoire minimum requis, pas root ou l’utilisateur système principal
- Mode de transfert : Binaire, pas Auto ou ASCII
- Permissions de fichiers : 644 pour les fichiers, 755 pour les répertoires — vérifiés après téléversement
- Fichiers sensibles : Confirmez que
.env,.git/,node_modules/, et les fichiers de configuration avec des identifiants sont exclus du téléversement via les filtres de noms de fichiers - Vérification par somme de contrôle : Comparaison MD5 ou SHA-256 pour les fichiers critiques après transfert
- Mode passif : Activé par défaut dans le client FTP
- Clés SSH : Utilisez l’authentification par clé pour SFTP sur tout serveur que vous contrôlez ; désactivez l’authentification par mot de passe dans
sshd_configsi possible
Foire aux questions
Quelle est la différence entre FTP et SFTP ?
FTP transmet les données et les identifiants en texte clair sur deux canaux TCP distincts (contrôle sur le port 21, données sur le port 20 ou éphémère). SFTP est un protocole complètement différent construit sur SSH qui multiplexe tout à travers un seul canal chiffré sur le port 22. Ils partagent un nom mais ne partagent aucun code de protocole.
Pourquoi FileZilla affiche-t-il « Délai de connexion dépassé » même avec des identifiants corrects ?
Un délai d’attente avant l’authentification signifie généralement que le port du serveur est inaccessible — bloqué par un pare-feu, le service ne fonctionne pas, ou le nom d’hôte ne se résout pas vers la bonne IP. Un délai d’attente après l’authentification indique généralement un problème de mode passif où la plage de ports du canal de données est bloquée par un pare-feu. Vérifiez les règles de pare-feu côté serveur et confirmez que la plage de ports passifs est ouverte.
Puis-je utiliser FTP pour téléverser des fichiers vers un VPS sans panneau de contrôle ?
Oui. Installez un démon SSH compatible SFTP (OpenSSH, qui est standard sur toutes les distributions Linux) — aucun logiciel de serveur FTP supplémentaire n’est requis. Connectez-vous avec FileZilla en utilisant le protocole SFTP sur le port 22 et vos identifiants SSH ou votre paire de clés. C’est l’approche recommandée pour tout environnement VPS Hosting.
Quelles permissions de fichiers WordPress doivent avoir après le téléversement FTP ?
Les fichiers du cœur de WordPress doivent être en 644, les répertoires en 755, et wp-config.php doit être en 600 (lecture/écriture pour le propriétaire uniquement). Le répertoire wp-content/uploads nécessite 755 ou 775 pour que le serveur web puisse écrire les médias téléversés. Ne définissez jamais aucun répertoire WordPress à 777.
Y a-t-il une limite de taille de fichier lors du téléversement via FTP ?
FTP et SFTP n’imposent eux-mêmes aucune limite de taille de fichier inhérente — les transferts sont en flux continu. Les limites pratiques proviennent des quotas disque côté serveur, du upload_max_filesize PHP (sans rapport pour FTP, qui contourne entièrement PHP), ou des limites du système de fichiers (ext4 prend en charge des fichiers jusqu’à 16 TB). Pour l’Hébergement Web Mutualisé, le fournisseur d’hébergement peut imposer un quota disque qui limite le stockage total plutôt que la taille des fichiers individuels.
