Skip to content

Alles für WordPress, Webentwicklung — und mehr

🚀 SSL/TLS auf dem Datenkanal erforderlich – Fehler bei FTP-Verbindung: So beheben Sie ihn

🚀 SSL/TLS auf dem Datenkanal erforderlich – Fehler bei FTP-Verbindung: So beheben Sie ihn

Sie verbinden sich über Ihren Code-Editor per FTP mit einem Server, geben Host, Benutzernamen und Passwort ein und erhalten als Antwort eine rote Zeile: SSL/TLS required on the data channel. Kommt Ihnen das bekannt vor? Dieser Fehler tritt auf, wenn der Server eine verschlüsselte Verbindung verlangt, der Client jedoch versucht, eine Verbindung über unverschlüsseltes FTP herzustellen. Besonders häufig passiert das bei Hosting-Anbietern mit selbstsignierten Zertifikaten.

Früher wurde dieses Problem in Atom über das Remote-FTP-Plugin gelöst. Atom wurde im Dezember 2022 eingestellt, der Fehler ist aber nicht verschwunden. Er lebt weiter in VS Code, FileZilla, Pulsar und jedem FTP-Client, der sich mit einem Server mit selbstsigniertem SSL-Zertifikat verbindet.

In diesem Beitrag zeige ich Ihnen drei funktionierende Wege, um SSL/TLS required on the data channel zu umgehen: für Atom/Pulsar über .ftpconfig, für VS Code über die SFTP-Erweiterung und für GUI-Clients wie FileZilla. Dazu eine wichtige Warnung: wann rejectUnauthorized: false ein akzeptabler Workaround ist und wann es ein Sicherheitsleck darstellt.

💡 Kurzüberblick:

  • Woher der Fehler kommt: Der Server verlangt TLS, der Client sendet unverschlüsseltes FTP, die Verbindung bricht auf der Ebene des Datenkanals ab.
  • .ftpconfig mit rejectUnauthorized: false und secure: true ist die Lösung für Atom und dessen Fork Pulsar, die mit dem Remote-FTP-Plugin funktioniert.
  • In VS Code löst die SFTP-Erweiterung von liximomo mit dem Parameter secure: true dasselbe Problem auf der Ebene der sftp.json-Konfiguration.
  • In FileZilla und anderen GUI-Clients wechseln Sie einfach das Protokoll von FTP auf FTPS (Explicit TLS) und akzeptieren das Zertifikat manuell.
  • Sicherheit: rejectUnauthorized: false deaktiviert die Zertifikatsprüfung und ist nur für Dev-Server und Testumgebungen akzeptabel, niemals in der Produktion.

Woher der Fehler „SSL/TLS required on the data channel" kommt

Das FTP-Protokoll arbeitet mit zwei Kanälen: einem Steuerkanal (Befehle) und einem Datenkanal (eigentliche Dateiübertragung). Wenn der Server für FTPS (FTP over TLS) konfiguriert ist, verschlüsselt er beide. Ein Client, der eine Verbindung über reguläres FTP versucht, durchläuft die Authentifizierung auf dem Steuerkanal erfolgreich, doch beim Versuch, den Datenkanal zu öffnen, antwortet der Server: 550 SSL/TLS required on the data channel.

Der technische Grund liegt in der TLS-Implementierung auf Node.js-Seite (worauf sowohl Remote FTP für Atom als auch die SFTP-Erweiterung für VS Code aufbauen). Node.js validiert SSL-Zertifikate standardmäßig. Ein selbstsigniertes Zertifikat besteht diese Validierung nicht, und die Verbindung bricht ab. Die Lösung: Entweder dem Client explizit mitteilen, das Zertifikat nicht zu prüfen (rejectUnauthorized: false), oder auf explizites FTPS mit manueller Zertifikatsannahme umstellen.

Lösung 1: Korrekte .ftpconfig für Atom und Pulsar

Atom wurde im Dezember 2022 offiziell eingestellt, aber sein Fork Pulsar (ehemals Atom) ist vollständig kompatibel mit Atom-Paketen, einschließlich Remote FTP. Die Lösung besteht darin, die korrekten secureOptions in der .ftpconfig anzugeben.

Erstellen (oder bearbeiten) Sie die Datei .ftpconfig im Projektstammverzeichnis:

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}

Schlüsselparameter:

  • secure: true aktiviert TLS für beide Kanäle, Steuer- und Datenkanal;
  • rejectUnauthorized: false deaktiviert die Zertifikatsprüfung (Node.js verlangt kein gültiges Zertifikat mehr vom Server);
  • port: 21 ist der Standardport für FTP; für FTPS über implizites TLS verwenden Sie Port 990 und protocol: "ftps".

Nach dem Speichern der .ftpconfig stellen Sie die Verbindung zum Server erneut her, und der Fehler SSL/TLS required on the data channel verschwindet.

Lösung 2: Konfiguration der SFTP-Erweiterung in VS Code

Die beliebteste Erweiterung für FTP/SFTP in VS Code ist SFTP von liximomo (über 1,3 Mio. Installationen). Der Fehler 550 SSL/TLS required on the control channel wird in Issue #872 diskutiert.

Nach der Installation der Erweiterung führen Sie Ctrl+Shift+PSFTP: Config aus, und die Datei sftp.json öffnet sich. Konfigurieren Sie sie wie folgt:

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}

Der Parameter secure: true ist ein direktes Äquivalent zu rejectUnauthorized: false aus der .ftpconfig. Er weist die Erweiterung an, FTPS zu verwenden und die Verbindung bei einem selbstsignierten Zertifikat nicht abzubrechen.

Wenn der Server implizites FTPS (Port 990) verwendet, ändern Sie protocol auf ftps und port auf 990. Speichern Sie sftp.json, führen Sie SFTP: Download Project aus, und die Erweiterung verbindet sich und lädt den Inhalt von remotePath herunter.

Lösung 3: FileZilla und andere GUI-Clients

In GUI-Clients wird das Problem noch einfacher auf der Oberflächenebene gelöst. In FileZilla:

  • Öffnen Sie die Serververwaltung (Ctrl+S).
  • Wählen Sie die Verbindung aus und wechseln Sie im Feld Protokoll von FTP auf FTP over TLS (explicit).
  • Bei der ersten Verbindung zeigt FileZilla einen Dialog mit dem Zertifikatsfingerabdruck an; klicken Sie auf Diesem Zertifikat vertrauen und setzen Sie den Haken bei „Immer vertrauen".

Dasselbe Prinzip funktioniert in WinSCP, Cyberduck und jedem modernen FTP-Client: Geben Sie explizit das FTPS-Protokoll an und akzeptieren Sie das Zertifikat manuell. Keine Konfigurationsdateien, nur die Oberfläche.

Wann Sie die Zertifikatsprüfung NICHT deaktivieren sollten

rejectUnauthorized: false ist eine bewusste Schwächung der Sicherheit. Sie sagen dem Client: „Akzeptiere JEDES Zertifikat, auch ein gefälschtes." Das ist in drei Fällen akzeptabel:

  • Ein lokaler Dev-Server oder eine Staging-Umgebung, die nicht aus dem Internet erreichbar ist.
  • Ihr eigener VPS, bei dem Sie genau wissen, woher das Zertifikat stammt.
  • Eine Testumgebung hinter einem Firmen-VPN.

Auf einem Produktionsserver mit selbstsigniertem Zertifikat ist es besser, 15 Minuten in die Einrichtung von Let's Encrypt zu investieren, einem kostenlosen SSL-Zertifikat, das alle Clients ohne rejectUnauthorized: false erkennen.

Sehen Sie sich dieses kurze Tutorial zur SFTP-Verbindung in VS Code an, das alle Schritte von der Installation der Erweiterung bis zur ersten Serververbindung abdeckt:

⁉️🤔 Häufig gestellte Fragen

Der Fehler bleibt nach secure: true bestehen; was sollte ich noch prüfen?

Überprüfen Sie zuerst den Port. Explizites FTPS arbeitet auf Port 21, implizites auf 990. Wenn der Serveradministrator implizites FTPS verlangt, Sie aber protocol: "ftp" mit port: 21 angegeben haben, kommt die Verbindung nicht zustande, egal wie sehr Sie die secureOptions ändern. Prüfen Sie Ihr Hosting-Panel oder fragen Sie den Administrator, welchen FTPS-Modus der Server verwendet.

Kann ich SFTP anstelle von FTPS verwenden?

Ja, und das ist die bevorzugte Option. SFTP (SSH File Transfer Protocol) arbeitet über SSH, nicht über FTP, daher existieren SSL-Zertifikatsprobleme dafür schlichtweg nicht. Wenn der Server SSH-Zugang bietet, verwenden Sie SFTP anstelle von FTPS. In derselben .ftpconfig ändern Sie einfach protocol auf sftp und port auf 22.

Atom wurde eingestellt; funktioniert Remote FTP noch?

Das Remote-FTP-Paket ist im Atom-Repository verfügbar, aber der Editor selbst wurde seit Dezember 2022 nicht mehr aktualisiert und enthält bekannte Sicherheitslücken. GitHub hat die Codesignaturzertifikate für Atom im Januar 2023 sogar widerrufen. Wenn Atom auf Ihrem Rechner noch startet, migrieren Sie zum Pulsar-Fork, der dieselben Pakete und Konfigurationen ohne Änderungen übernimmt.

Was ist mit VS Code Remote SSH?

Remote SSH ist eine ausgezeichnete Alternative zu FTP-Verbindungen, wenn der Server unter Linux läuft und SSH-Zugang bietet. Sie arbeiten direkt mit den Dateien, ohne Synchronisation und Zertifikatsprobleme. Für Shared Hosting jedoch, wo SSH gesperrt ist und der Zugang nur per FTP erfolgt, bleiben die Lösungen in diesem Beitrag relevant.

Der Fehler SSL/TLS required on the control channel (nicht Datenkanal): ist das dasselbe?

Ja, der einzige Unterschied ist, auf welchem Kanal die Verbindung abgebrochen ist. Der Steuerkanal verarbeitet Befehle (Authentifizierung, Navigation), der Datenkanal die Dateiübertragung. Der Server kann TLS auf einem der beiden Kanäle verlangen. Die Lösung ist identisch: secure: true + rejectUnauthorized: false in der Konfiguration.

Fehler besteht weiter: Abschließende Checkliste

Gehen Sie die Punkte durch; einer davon wird das Problem lösen:

  • Protokoll: Ist secure: true in der Konfiguration gesetzt (.ftpconfig oder sftp.json)?
  • Port: Explizites FTPS = 21, implizites = 990, SFTP = 22. Gleichen Sie mit den Servereinstellungen ab.
  • rejectUnauthorized: Ein selbstsigniertes Zertifikat besteht die Node.js-Validierung ohne diese Option NICHT.
  • GUI-Client: Haben Sie in der Serververwaltung auf FTP over TLS (explicit) umgestellt und das Zertifikat manuell akzeptiert?
  • SFTP statt FTPS: Wenn Sie SSH-Zugang haben, vergessen Sie FTP und wechseln Sie zu SFTP.

Wenn Sie alles versucht haben und der Fehler weiterhin besteht, ist der Server höchstwahrscheinlich für implizites FTPS (Port 990) konfiguriert, während der Client sich mit Port 21 verbindet. Erfragen Sie bei Ihrem Hosting-Anbieter den erforderlichen Modus und Port.

Dieser Fehler ist kein Editor-Bug, sondern eine Eigenschaft des TLS-Handshakes mit einem selbstsignierten Zertifikat. Nach korrekter Konfiguration verschwindet er auf jedem Client: ob in Atom von 2018, Pulsar von 2026 oder VS Code.