Skip to content

Tout pour WordPress, le développement web — et plus encore

🚀 Erreur « SSL/TLS required on the data channel » lors d'une connexion FTP : comment la corriger

🚀 Erreur « SSL/TLS required on the data channel » lors d'une connexion FTP : comment la corriger

Vous vous connectez à un serveur via FTP depuis votre éditeur de code, vous renseignez l’hôte, l’identifiant et le mot de passe, et vous obtenez une ligne rouge en réponse: SSL/TLS required on the data channel. Cela vous dit quelque chose? Cette erreur survient lorsque le serveur exige une connexion chiffrée, mais que le client tente de se connecter en FTP non sécurisé. Cela arrive particulièrement souvent chez les hébergeurs qui utilisent des certificats auto-signés.

Auparavant, ce problème se résolvait dans Atom via le plugin Remote FTP. Atom a disparu en décembre 2022, mais l’erreur, elle, n’a pas bougé. Elle persiste dans VS Code, FileZilla, Pulsar et tout client FTP qui se connecte à un serveur doté d’un certificat SSL auto-signé.

Dans cet article, trois méthodes efficaces pour contourner l’erreur SSL/TLS required on the data channel: pour Atom/Pulsar via .ftpconfig, pour VS Code via l’extension SFTP, et pour les clients graphiques comme FileZilla. Sans oublier un avertissement important: quand rejectUnauthorized: false est une solution de contournement acceptable, et quand c’est une faille de sécurité.

💡 Aperçu rapide:

  • D’où vient l’erreur: le serveur exige TLS, le client envoie du FTP simple, la connexion est coupée à l’étape du canal de données.
  • .ftpconfig avec rejectUnauthorized: false et secure: true est la solution pour Atom et son fork Pulsar qui fonctionne avec le plugin Remote FTP.
  • Dans VS Code, l’extension SFTP de liximomo avec le paramètre secure: true résout le même problème au niveau de la configuration sftp.json.
  • Dans FileZilla et les autres clients graphiques, il suffit de basculer le protocole de FTP vers FTPS (TLS explicite) et d’accepter le certificat manuellement.
  • Sécurité: rejectUnauthorized: false désactive la vérification du certificat et n’est acceptable que pour les serveurs de développement et les environnements de test, jamais en production.

D’où vient l’erreur SSL/TLS required on the data channel

Le protocole FTP fonctionne via deux canaux: le canal de contrôle (commandes) et le canal de données (transfert effectif des fichiers). Lorsque le serveur est configuré en FTPS (FTP over TLS), il chiffre les deux. Un client qui tente de se connecter en FTP classique passe l’authentification avec succès sur le canal de contrôle, mais au moment d’ouvrir le canal de données, le serveur répond: 550 SSL/TLS required on the data channel.

La raison technique réside dans l’implémentation de TLS côté Node.js (sur lequel sont construits aussi bien Remote FTP pour Atom que l’extension SFTP de VS Code). Node.js valide les certificats SSL par défaut. Un certificat auto-signé échoue à cette validation et la connexion est coupée. La solution: soit indiquer explicitement au client de ne pas vérifier le certificat (rejectUnauthorized: false), soit passer en FTPS explicite avec acceptation manuelle du certificat.

Solution 1: un.ftpconfig correct pour Atom et Pulsar

Atom a officiellement été abandonné en décembre 2022, mais son fork Pulsar (anciennement Atom) est entièrement compatible avec les packages Atom, y compris Remote FTP. La solution consiste à spécifier les bonnes secureOptions dans .ftpconfig.

Créez (ou modifiez) le fichier .ftpconfig à la racine du projet:

1{
2 "protocol": "ftp",
3 "host": "your.server.com",
4 "port": 21,
5 "user": "login",
6 "pass": "password",
7 "promptForPass": false,
8 "remote": "/",
9 "secure": true,
10 "secureOptions": {
11 "rejectUnauthorized": false
12 },
13 "connTimeout": 10000,
14 "keepalive": 10000
15}

Paramètres clés:

  • secure: true active TLS pour les canaux de contrôle et de données;
  • rejectUnauthorized: false désactive la vérification du certificat (Node.js cesse d’exiger un certificat valide de la part du serveur);
  • port: 21 est le port standard pour FTP; pour le FTPS via TLS implicite, utilisez le port 990 et protocol: "ftps".

Après avoir sauvegardé .ftpconfig, reconnectez-vous au serveur et l’erreur SSL/TLS required on the data channel disparaîtra.

Solution 2: configurer l’extension SFTP dans VS Code

L’extension la plus populaire pour FTP/SFTP dans VS Code est SFTP by liximomo (plus de 1,3 million d’installations). L’erreur 550 SSL/TLS required on the control channel est discutée dans l’issue n°872.

Après avoir installé l’extension, lancez Ctrl+Shift+PSFTP: Config et le fichier sftp.json s’ouvrira. Configurez-le comme suit:

1{
2 "name": "My server",
3 "host": "your.server.com",
4 "protocol": "ftp",
5 "port": 21,
6 "secure": true,
7 "username": "login",
8 "password": "password",
9 "remotePath": "/",
10 "uploadOnSave": true
11}

Le paramètre secure: true est l’équivalent direct de rejectUnauthorized: false du .ftpconfig. Il indique à l’extension d’utiliser FTPS et de ne pas couper la connexion face à un certificat auto-signé.

Si le serveur utilise le FTPS implicite (port 990), passez protocol à ftps et port à 990. Sauvegardez sftp.json, exécutez SFTP: Download Project et l’extension se connectera en téléchargeant le contenu de remotePath.

Solution 3: FileZilla et autres clients graphiques

Dans les clients graphiques, le problème se résout encore plus simplement au niveau de l’interface. Dans FileZilla:

  • Ouvrez le Gestionnaire de sites (Ctrl+S).
  • Sélectionnez la connexion et, dans le champ Protocole, basculez de FTP à FTP over TLS (explicit).
  • Lors de la première connexion, FileZilla affichera une boîte de dialogue avec l’empreinte du certificat; cliquez sur Trust this certificate et cochez «Always trust».

Le même principe s’applique dans WinSCP, Cyberduck et tout client FTP moderne: spécifiez explicitement le protocole FTPS et acceptez le certificat manuellement. Pas de fichiers de configuration, uniquement l’interface.

Quand vous ne devez PAS désactiver la vérification du certificat

rejectUnauthorized: false est un affaiblissement délibéré de la sécurité. Vous dites au client: «accepte N’IMPORTE QUEL certificat, même un certificat falsifié». C’est acceptable dans trois cas:

  • Un serveur de développement local ou un environnement de staging non accessible depuis Internet.
  • Votre propre VPS, dont vous connaissez précisément l’origine du certificat.
  • Un environnement de test derrière un VPN d’entreprise.

Sur un serveur de production avec un certificat auto-signé, il est préférable de consacrer 15 minutes à la mise en place de Let's Encrypt, un certificat SSL gratuit que tous les clients reconnaissent sans rejectUnauthorized: false.

Regardez ce court tutoriel sur la connexion SFTP dans VS Code, qui couvre toutes les étapes, de l’installation de l’extension à la première connexion au serveur:

⁉️🤔 Foire aux questions

L’erreur persiste après secure: true; que dois-je vérifier d’autre?

Vérifiez d’abord le port. Le FTPS explicite fonctionne sur le port 21, l’implicite sur le 990. Si l’administrateur du serveur exige le FTPS implicite mais que vous avez spécifié protocol: "ftp" avec port: 21, la connexion ne s’établira pas, quels que soient les changements apportés à secureOptions. Consultez votre panneau d’hébergement ou demandez à l’administrateur quel mode FTPS le serveur utilise.

Puis-je utiliser SFTP au lieu de FTPS?

Oui, et c’est l’option à privilégier. SFTP (SSH File Transfer Protocol) fonctionne via SSH, et non via FTP, donc les problèmes de certificat SSL n’existent tout simplement pas pour lui. Si le serveur fournit un accès SSH, utilisez SFTP plutôt que FTPS. Dans le même .ftpconfig, il suffit de passer protocol à sftp et port à 22.

Atom a été abandonné**; Remote FTP fonctionne-t-il encore?**

Le package Remote FTP est disponible dans le dépôt d’Atom, mais l’éditeur lui-même n’a plus été mis à jour depuis décembre 2022 et contient des vulnérabilités connues. GitHub a même révoqué les certificats de signature de code d’Atom en janvier 2023. Si Atom se lance encore sur votre machine, migrez vers le fork Pulsar, qui récupère les mêmes packages et configurations sans changement.

Qu’en est-il de VS Code Remote SSH?

Remote SSH est une excellente alternative aux connexions FTP si le serveur tourne sous Linux et dispose d’un accès SSH. Vous travaillez directement sur les fichiers, sans synchronisation ni tracas de certificat. Mais pour les hébergements mutualisés où SSH est fermé et où l’accès se fait uniquement via FTP, les solutions de cet article restent pertinentes.

L’erreur SSL/TLS required on the control channel (et non data channel): est-ce la même chose?

Oui, la seule différence est le canal sur lequel la connexion a été coupée. Le canal de contrôle gère les commandes (authentification, navigation), le canal de données gère le transfert de fichiers. Le serveur peut exiger TLS sur l’un ou l’autre. La solution est identique: secure: true + rejectUnauthorized: false dans la configuration.

L’erreur persiste: checklist finale

Passez en revue les points suivants; l’un d’eux résoudra le problème:

  • Protocole: secure: true est-il bien défini dans la configuration (.ftpconfig ou sftp.json)?
  • Port: FTPS explicite = 21, implicite = 990, SFTP = 22. Vérifiez par rapport aux paramètres du serveur.
  • rejectUnauthorized: un certificat auto-signé ne passera PAS la validation Node.js sans cette option.
  • Client graphique: avez-vous basculé le Gestionnaire de sites sur FTP over TLS (explicit) et accepté manuellement le certificat?
  • SFTP au lieu de FTPS: si vous avez un accès SSH, oubliez le FTP et passez en SFTP.

Si vous avez tout essayé et que l’erreur persiste, le serveur est très probablement configuré en FTPS implicite (port 990), alors que le client se connecte sur le port 21. Vérifiez auprès de votre hébergeur le mode et le port requis.

Cette erreur n’est pas un bug de l’éditeur, mais une caractéristique de la négociation TLS avec un certificat auto-signé. Une fois la configuration correctement mise en place, elle disparaît sur n’importe quel client: que ce soit dans Atom de 2018, Pulsar de 2026 ou VS Code.