Skip to content

Allt om WordPress, webbutveckling — och mer därtill

🚀 SSL/TLS krävs på datakanalen fel vid FTP-anslutning: hur man fixar

🚀 SSL/TLS krävs på datakanalen fel vid FTP-anslutning: hur man fixar

Du ansluter till en server via FTP genom din kodredigerare, anger värd, användarnamn och lösenord och får en röd linje som svar: SSL/TLS required on the data channel. Låter det bekant? Felet uppstår när servern kräver en krypterad anslutning, men klienten försöker ansluta via okrypterad FTP. Detta händer särskilt ofta hos webbhotell med självsignerade certifikat.

Tidigare löstes problemet i Atom via tillägget Remote FTP. Atom dog i december 2022, men felet har inte försvunnit. Det lever vidare i VS Code, FileZilla, Pulsar och alla FTP-klienter som ansluter till en server med ett självsignerat SSL-certifikat.

I det här inlägget går vi igenom tre fungerande sätt att kringgå SSL/TLS required on the data channel: för Atom/Pulsar via .ftpconfig, för VS Code via SFTP-tillägget och för GUI-klienter som FileZilla. Plus en viktig varning: när rejectUnauthorized: false är en acceptabel lösning, och när det är ett säkerhetshål.

💡 Snabb översikt:

  • Var felet kommer ifrån: servern kräver TLS, klienten skickar okrypterad FTP, anslutningen bryts vid datakanalsteget.
  • .ftpconfig med rejectUnauthorized: false och secure: true är lösningen för Atom och dess fork Pulsar som fungerar med Remote FTP-tillägget.
  • I VS Code löser SFTP-tillägget av liximomo med parametern secure: true samma problem på konfigurationsnivån sftp.json.
  • I FileZilla och andra GUI-klienter byter du helt enkelt protokoll från FTP till FTPS (Explicit TLS) och accepterar certifikatet manuellt.
  • Säkerhet: rejectUnauthorized: false inaktiverar certifikatverifiering och är endast acceptabelt för utvecklingsservrar och testmiljöer, aldrig i produktion.

Var felet SSL/TLS required on the data channel kommer ifrån

FTP-protokollet fungerar via två kanaler: kontrollkanal (kommandon) och datakanal (själva filöverföringen). När servern är konfigurerad för FTPS (FTP över TLS) krypterar den båda. En klient som försöker ansluta via vanlig FTP klarar autentiseringen på kontrollkanalen, men när den försöker öppna datakanalen svarar servern: 550 SSL/TLS required on the data channel.

Den tekniska orsaken ligger i TLS-implementeringen på Node.js-sidan (som både Remote FTP för Atom och VS Code SFTP-tillägget är byggda på). Node.js validerar SSL-certifikat som standard. Ett självsignerat certifikat klarar inte denna validering, och anslutningen bryts. Lösningen: antingen be klienten uttryckligen att inte verifiera certifikatet (rejectUnauthorized: false), eller byt till explicit FTPS med manuell certifikatacceptans.

Lösning 1: korrekt.ftpconfig för Atom och Pulsar

Atom lades officiellt ned i december 2022, men dess fork Pulsar (tidigare Atom) är fullt kompatibel med Atom-paket, inklusive Remote FTP. Lösningen är att ange rätt secureOptions i .ftpconfig.

Skapa (eller redigera) filen .ftpconfig i projektroten:

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}

Viktiga parametrar:

  • secure: true aktiverar TLS för både kontroll- och datakanaler;
  • rejectUnauthorized: false inaktiverar certifikatverifiering (Node.js slutar kräva ett giltigt certifikat från servern);
  • port: 21 är standardporten för FTP; för FTPS via implicit TLS, använd port 990 och protocol: "ftps".

Efter att du sparat .ftpconfig, anslut till servern igen, så försvinner felet SSL/TLS required on the data channel.

Lösning 2: konfigurera SFTP-tillägget i VS Code

Det populäraste tillägget för FTP/SFTP i VS Code är SFTP by liximomo (1,3+ miljoner installationer). Felet 550 SSL/TLS required on the control channel diskuteras i issue #872.

Efter installation av tillägget, kör Ctrl+Shift+PSFTP: Config, så öppnas filen sftp.json. Konfigurera den enligt följande:

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}

Parametern secure: true är en direkt motsvarighet till rejectUnauthorized: false från .ftpconfig. Den talar om för tillägget att använda FTPS och inte bryta anslutningen när det stöter på ett självsignerat certifikat.

Om servern använder implicit FTPS (port 990), ändra protocol till ftps och port till 990. Spara sftp.json, kör SFTP: Download Project, så ansluter tillägget och laddar ner innehållet i remotePath.

Lösning 3: FileZilla och andra GUI-klienter

I GUI-klienter löses problemet ännu enklare på gränssnittsnivå. I FileZilla:

  • Öppna Platshanteraren (Ctrl+S).
  • Välj anslutningen, och i fältet Protokoll byt från FTP till FTP over TLS (explicit).
  • Vid första anslutningen visar FileZilla en dialog med certifikatets fingeravtryck; klicka på Lita på detta certifikat och kryssa i "Lita alltid på."

Samma princip fungerar i WinSCP, Cyberduck och alla moderna FTP-klienter: ange uttryckligen FTPS-protokollet och acceptera certifikatet manuellt. Inga konfigurationsfiler, bara gränssnittet.

När du INTE bör inaktivera certifikatverifiering

rejectUnauthorized: false är en medveten försvagning av säkerheten. Du säger till klienten: "acceptera ALLA certifikat, även förfalskade." Detta är acceptabelt i tre fall:

  • En lokal utvecklingsserver eller staging-miljö som inte är tillgänglig från internet.
  • Din egen VPS, där du vet exakt var certifikatet kommer ifrån.
  • En testmiljö bakom ett företags-VPN.

På en produktionsserver med ett självsignerat certifikat är det bättre att lägga 15 minuter på att sätta upp Let's Encrypt, ett gratis SSL-certifikat som alla klienter känner igen utan rejectUnauthorized: false.

Se den här korta handledningen om SFTP-anslutning i VS Code, som täcker alla steg från installation av tillägget till första serveranslutningen:

⁉️🤔 Vanliga frågor

Felet kvarstår efter secure: true; vad mer bör jag kontrollera?

Kontrollera först porten. Explicit FTPS fungerar på port 21, implicit på 990. Om serveradministratören kräver implicit FTPS men du angav protocol: "ftp" med port: 21, kommer anslutningen inte att upprättas oavsett hur mycket du ändrar secureOptions. Kontrollera din webbhotellspanel eller fråga administratören vilket FTPS-läge servern använder.

Kan jag använda SFTP istället för FTPS?

Ja, och detta är det föredragna alternativet. SFTP (SSH File Transfer Protocol) fungerar över SSH, inte FTP, så SSL-certifikatproblem existerar helt enkelt inte för det. Om servern erbjuder SSH-åtkomst, använd SFTP istället för FTPS. I samma .ftpconfig, ändra bara protocol till sftp och port till 22.

Atom har lagts ned; fungerar Remote FTP fortfarande?

Remote FTP-paketet finns tillgängligt i Atoms arkiv, men själva redigeraren har inte uppdaterats sedan december 2022 och innehåller kända sårbarheter. GitHub återkallade till och med kodsigneringscertifikaten för Atom i januari 2023. Om Atom fortfarande startar på din maskin, migrera till Pulsar-forken, som hämtar samma paket och konfigurationer utan ändringar.

Vad sägs om VS Code Remote SSH?

Remote SSH är ett utmärkt alternativ till FTP-anslutningar om servern kör Linux och har SSH-åtkomst. Du arbetar med filer direkt, utan synkronisering och certifikatstrul. Men för delade webbhotell där SSH är stängt och åtkomst endast sker via FTP, förblir lösningarna i detta inlägg relevanta.

Felet SSL/TLS required on the control channel (inte datakanal): är detta samma sak?

Ja, den enda skillnaden är vilken kanal anslutningen bröts på. Kontrollkanalen hanterar kommandon (autentisering, navigering), datakanalen hanterar filöverföring. Servern kan kräva TLS på endera av dem. Lösningen är identisk: secure: true + rejectUnauthorized: false i konfigurationen.

Felet kvarstår: slutlig checklista

Gå igenom punkterna; en av dem kommer att lösa problemet:

  • Protokoll: är secure: true inställt i konfigurationen (.ftpconfig eller sftp.json)?
  • Port: explicit FTPS = 21, implicit = 990, SFTP = 22. Verifiera mot serverinställningarna.
  • rejectUnauthorized: ett självsignerat certifikat kommer INTE att klara Node.js validering utan detta alternativ.
  • GUI-klient: bytte du Platshanteraren till FTP over TLS (explicit) och accepterade certifikatet manuellt?
  • SFTP istället för FTPS: om du har SSH-åtkomst, glöm FTP och byt till SFTP.

Om du har provat allt och felet kvarstår, är servern troligtvis konfigurerad för implicit FTPS (port 990), medan klienten ansluter till port 21. Kontrollera med din webbhotellsleverantör vilket läge och vilken port som krävs.

Detta fel är inte en bugg i redigeraren utan en egenskap hos TLS-handskakningen med ett självsignerat certifikat. Efter korrekt konfigurationsinställning försvinner det i alla klienter: vare sig det är i Atom från 2018, Pulsar från 2026 eller VS Code.