Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🚀 Andmekanalil nõutav SSL/TLS viga FTP-ühenduse ajal: kuidas parandada

🚀 Andmekanalil nõutav SSL/TLS viga FTP-ühenduse ajal: kuidas parandada

Ühendute serveriga FTP kaudu oma koodiredaktori kaudu, sisestate hosti, kasutajanime ja parooli ning saate vastuseks punase rea: SSL/TLS required on the data channel. Tuttav olukord? See viga tekib, kui server nõuab krüpteeritud ühendust, kuid klient proovib ühenduda tavalise FTP kaudu. Eriti sageli juhtub seda hostinguteenuste pakkujate puhul, kellel on iseallkirjastatud sertifikaadid.

Varem lahendati seda probleemi Atomis Remote FTP plugina abil. Atom suri 2022. aasta detsembris, kuid viga pole kuhugi kadunud. See elab edasi VS Code'is, FileZillas, Pulsaris ja igas FTP kliendis, mis ühendub iseallkirjastatud SSL-sertifikaadiga serverisse.

Selles postituses kolm toimivat viisi SSL/TLS required on the data channel veast möödahiilimiseks: Atomile/Pulsarile .ftpconfig kaudu, VS Code'ile SFTP laienduse kaudu ja GUI klientidele nagu FileZilla. Lisaks oluline hoiatus: millal rejectUnauthorized: false on vastuvõetav lahendus ja millal on see turvaauk.

💡 Kiirülevaade:

  • Kust viga tuleb: server nõuab TLS-i, klient saadab tavalise FTP, ühendus katkeb andmekanali etapis.
  • .ftpconfig parameetritega rejectUnauthorized: false ja secure: true on lahendus Atomile ja selle harule Pulsarile, mis töötab Remote FTP pluginaga.
  • VS Code'is lahendab sama probleemi liximomo SFTP laiendus parameetriga secure: true sftp.json konfiguratsioonifaili tasemel.
  • FileZillas ja teistes GUI klientides lihtsalt vahetage protokoll FTP-lt FTPS-ile (Explicit TLS) ja aktsepteerige sertifikaat käsitsi.
  • Turvalisus: rejectUnauthorized: false lülitab sertifikaadi kontrollimise välja ja on vastuvõetav ainult arendusserverite ja testkeskkondade puhul, mitte kunagi tootmiskeskkonnas.

Kust tuleb viga SSL/TLS required on the data channel

FTP protokoll töötab kahe kanali kaudu: juhtkanal (käsud) ja andmekanal (tegelik failiedastus). Kui server on seadistatud FTPS-ile (FTP over TLS), krüpteerib see mõlemad. Klient, kes proovib ühenduda tavalise FTP kaudu, läbib edukalt autentimise juhtkanalil, kuid andmekanali avamise katsel vastab server: 550 SSL/TLS required on the data channel.

Tehniline põhjus peitub TLS-i implementatsioonis Node.js poolel (millele on ehitatud nii Remote FTP Atomile kui ka VS Code SFTP laiendus). Node.js valideerib SSL-sertifikaate vaikimisi. Iseallkirjastatud sertifikaat ei läbi seda valideerimist ja ühendus katkeb. Lahendus: kas öelda kliendile selgesõnaliselt, et ta sertifikaati ei kontrolliks (rejectUnauthorized: false), või minna üle selgesõnalisele FTPS-ile koos sertifikaadi käsitsi aktsepteerimisega.

Lahendus 1: õige.ftpconfig Atomile ja Pulsarile

Atomi arendus lõpetati ametlikult 2022. aasta detsembris, kuid selle haru Pulsar (endine Atom) on täielikult ühilduv Atomi pakettidega, sealhulgas Remote FTP-ga. Lahendus on määrata õiged secureOptions failis .ftpconfig.

Looge (või muutke) .ftpconfig fail projekti juurkaustas:

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}

Peamised parameetrid:

  • secure: true lubab TLS-i nii juht- kui ka andmekanalile;
  • rejectUnauthorized: false lülitab sertifikaadi kontrollimise välja (Node.js ei nõua enam serverilt kehtivat sertifikaati);
  • port: 21 on FTP standardport; FTPS-i puhul üle implitsiitse TLS-i kasutage porti 990 ja protocol: "ftps".

Pärast .ftpconfig salvestamist ühendage serveriga uuesti ja viga SSL/TLS required on the data channel kaob.

Lahendus 2: SFTP laienduse seadistamine VS Code'is

Kõige populaarsem FTP/SFTP laiendus VS Code'is on SFTP by liximomo (üle 1,3 miljoni installi). Viga 550 SSL/TLS required on the control channel on arutatud issues #872.

Pärast laienduse installimist käivitage Ctrl+Shift+PSFTP: Config ja avaneb fail sftp.json. Seadistage see järgmiselt:

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}

Parameeter secure: true on otsene vaste .ftpconfig faili rejectUnauthorized: false-le. See ütleb laiendusele, et ta kasutaks FTPS-i ega katkestaks ühendust iseallkirjastatud sertifikaadiga kokku puutudes.

Kui server kasutab implitsiitset FTPS-i (port 990), muutke protocol väärtuseks ftps ja port väärtuseks 990. Salvestage sftp.json, käivitage SFTP: Download Project ja laiendus ühendub ning laeb alla remotePath sisu.

Lahendus 3: FileZilla ja teised GUI kliendid

GUI klientides lahendatakse probleem veelgi lihtsamalt, kasutajaliidese tasemel. FileZillas:

  • Avage saidihaldur (Ctrl+S).
  • Valige ühendus ja väljal Protokoll vahetage FTP asemel FTP over TLS (explicit).
  • Esimesel ühendusel näitab FileZilla dialoogi sertifikaadi sõrmejäljega; klõpsake Usalda seda sertifikaati ja märkige ruut "Usalda alati."

Sama põhimõte töötab WinSCP-s, Cyberduckis ja igas kaasaegses FTP kliendis: määrake selgesõnaliselt FTPS protokoll ja aktsepteerige sertifikaat käsitsi. Pole vaja ühtegi konfiguratsioonifaili, ainult kasutajaliides.

Millal te EI TOHIKS sertifikaadi kontrollimist välja lülitada

rejectUnauthorized: false on turvalisuse tahtlik nõrgestamine. Te ütlete kliendile: "aktsepteeri IGASUGUST sertifikaati, isegi võltsitud sertifikaati." See on vastuvõetav kolmel juhul:

  • Kohalik arendusserver või staging-keskkond, mis pole internetist ligipääsetav.
  • Teie enda VPS, kus teate täpselt, kust sertifikaat pärineb.
  • Testkeskkond ettevõtte VPN taga.

Tootmiskeskkonna serveris, millel on iseallkirjastatud sertifikaat, on parem kulutada 15 minutit Let's Encrypt seadistamisele, mis on tasuta SSL-sertifikaat, mida kõik kliendid ilma rejectUnauthorized: false-ita ära tunnevad.

Vaadake seda lühikest õpetust SFTP ühenduse kohta VS Code'is, mis hõlmab kõiki samme alates laienduse installimisest kuni esimese serveriühenduseni:

⁉️🤔 Korduma kippuvad küsimused

Viga püsib ka pärast secure: true; mida veel peaksin kontrollima?

Esmalt kontrollige porti. Selgesõnaline FTPS töötab pordil 21, implitsiitne pordil 990. Kui serveriadministraator nõuab implitsiitset FTPS-i, kuid teie määrasite protocol: "ftp" ja port: 21, siis ühendust ei looda, ükskõik kui palju te ka secureOptions ei muudaks. Kontrollige oma hostingupaneelist või küsige administraatorilt, millist FTPS režiimi server kasutab.

Kas ma saan FTPS-i asemel kasutada SFTP-d?

Jah, ja see on eelistatud variant. SFTP (SSH File Transfer Protocol) töötab üle SSH, mitte FTP, seega SSL-sertifikaadi probleeme selle puhul lihtsalt ei eksisteeri. Kui server pakub SSH ligipääsu, kasutage FTPS-i asemel SFTP-d. Samas .ftpconfig failis muutke lihtsalt protocol väärtuseks sftp ja port väärtuseks 22.

Atomi arendus on lõpetatud; kas Remote FTP ikka töötab?

Remote FTP pakett on Atomi repositooriumis saadaval, kuid redaktorit ennast pole pärast 2022. aasta detsembrit uuendatud ja see sisaldab teadaolevaid turvaauke. GitHub tühistas 2023. aasta jaanuaris isegi Atomi koodiallkirjastamise sertifikaadid. Kui Atom teie masinas veel käivitub, minge üle Pulsari harule, mis kasutab samu pakette ja konfiguratsioone muudatusteta.

Aga VS Code Remote SSH?

Remote SSH on suurepärane alternatiiv FTP ühendustele, kui serveris töötab Linux ja sellel on SSH ligipääs. Töötate failidega otse, ilma sünkroniseerimise ja sertifikaadiprobleemideta. Kuid jagatud hostinguteenuse puhul, kus SSH on suletud ja ligipääs on ainult FTP kaudu, jäävad selle postituse lahendused endiselt asjakohaseks.

Viga SSL/TLS required on the control channel (mitte andmekanalil): kas see on sama asi?

Jah, ainus erinevus on see, millisel kanalil ühendus katkes. Juhtkanal haldab käske (autentimine, navigeerimine), andmekanal failiedastust. Server võib nõuda TLS-i mõlemal kanalil. Lahendus on identne: secure: true + rejectUnauthorized: false konfiguratsioonis.

Viga püsib: lõplik kontrollnimekiri

Käige punktid läbi; üks neist lahendab probleemi:

  • Protokoll: kas konfiguratsioonis (.ftpconfig või sftp.json) on määratud secure: true?
  • Port: selgesõnaline FTPS = 21, implitsiitne = 990, SFTP = 22. Kontrollige serveri seadetega.
  • rejectUnauthorized: iseallkirjastatud sertifikaat EI läbi Node.js valideerimist ilma selle valikuta.
  • GUI klient: kas vahetasite saidihalduris protokolliks FTP over TLS (explicit) ja aktsepteerisite sertifikaadi käsitsi?
  • SFTP FTPS-i asemel: kui teil on SSH ligipääs, unustage FTP ja minge üle SFTP-le.

Kui olete kõike proovinud ja viga püsib, on server suure tõenäosusega seadistatud implitsiitsele FTPS-ile (port 990), samal ajal kui klient ühendub porti 21. Kontrollige oma hostinguteenuse pakkujalt nõutavat režiimi ja porti.

See viga ei ole redaktori viga, vaid TLS-kätluse omadus iseallkirjastatud sertifikaadi puhul. Pärast konfiguratsiooni õiget seadistamist kaob see igas kliendis: olgu see 2018. aasta Atomis, 2026. aasta Pulsaris või VS Code'is.