Skip to content

Все для WordPress, веб-розробки — і не тільки

🚀 Помилка SSL/TLS required on the data channel при FTP-підключенні: як виправити

🚀 Помилка SSL/TLS required on the data channel при FTP-підключенні: як виправити

Ви підключаєтеся до сервера через FTP за допомогою редактора коду, вводите хост, логін і пароль, а у відповідь отримуєте червоний рядок: SSL/TLS required on the data channel. Знайомо? Ця помилка виникає, коли сервер вимагає зашифроване з’єднання, а клієнт намагається підключитися через звичайний FTP. Особливо часто на хостингах із самопідписаним сертифікатом.

Раніше цю проблему вирішували в Atom через плагін Remote FTP. Atom помер у грудні 2022, але помилка нікуди не поділася. Вона живе у VS Code, FileZilla, Pulsar і будь-якому FTP-клієнті, який стукає до сервера із самопідписаним SSL-сертифікатом.

У цьому пості, три робочі способи обійти SSL/TLS required on the data channel: для Atom/Pulsar через .ftpconfig, для VS Code через SFTP-розширення та для GUI-клієнтів на кшталт FileZilla. Плюс важливе застереження: коли rejectUnauthorized: false — це прийнятний обхід, а коли, діра в безпеці.

💡 Швидкий огляд:

  • Звідки береться помилка: сервер вимагає TLS, клієнт надсилає відкритий FTP, з’єднання обривається на етапі data channel.
  • .ftpconfig із rejectUnauthorized: false та secure: true, рішення для Atom і форка Pulsar, яке працює з плагіном Remote FTP.
  • У VS Code розширення SFTP від liximomo з параметром secure: true вирішує ту саму проблему на рівні конфігурації sftp.json.
  • У FileZilla та інших GUI-клієнтах достатньо перемкнути протокол із FTP на FTPS (Explicit TLS) і прийняти сертифікат вручну.
  • Безпека: rejectUnauthorized: false вимикає перевірку сертифіката, припустимо лише для dev-серверів і тестових середовищ, ніколи на продакшені.

Звідки береться помилка SSL/TLS required on the data channel

FTP-протокол працює через два канали: control channel (команди) і data channel (власне передавання файлів). Коли сервер налаштований на FTPS (FTP over TLS), він шифрує обидва. Клієнт, який намагається підключитися звичайним FTP, успішно проходить автентифікацію на control-каналі, але під час спроби відкрити data-канал сервер відповідає: 550 SSL/TLS required on the data channel.

Технічна причина, у реалізації TLS на стороні Node.js (на якому написані і Remote FTP для Atom, і SFTP-розширення VS Code). Node.js за замовчуванням перевіряє валідність SSL-сертифіката. Самопідписаний сертифікат (self-signed) цю перевірку не проходить, з’єднання обривається. Рішення: або явно вказати клієнту, що сертифікат перевіряти не треба (rejectUnauthorized: false), або перемкнутися на явний FTPS із ручним прийняттям сертифіката.

Рішення 1: правильний.ftpconfig для Atom і Pulsar

Atom офіційно закритий із грудня 2022, але його форк Pulsar (колишній Atom) повністю сумісний з атомівськими пакетами, включно з Remote FTP. Рішення, прописати коректні secureOptions у .ftpconfig.

Створіть (або відредагуйте) файл .ftpconfig у корені проєкту:

1{
2 "protocol": "ftp",
3 "host": "ваш.сервер.com",
4 "port": 21,
5 "user": "логин",
6 "pass": "пароль",
7 "promptForPass": false,
8 "remote": "/",
9 "secure": true,
10 "secureOptions": {
11 "rejectUnauthorized": false
12 },
13 "connTimeout": 10000,
14 "keepalive": 10000
15}

Ключові параметри:

  • secure: true, вмикає TLS для control- і data-каналів;
  • rejectUnauthorized: false, вимикає перевірку сертифіката (Node.js перестає вимагати валідний сертифікат від сервера);
  • port: 21, стандартний порт для FTP; для FTPS через implicit TLS використовуйте порт 990 і protocol: "ftps".

Після збереження .ftpconfig перепідключіться до сервера, помилка SSL/TLS required on the data channel зникне.

Рішення 2: налаштування SFTP-розширення у VS Code

Найпопулярніше розширення для FTP/SFTP у VS Code, SFTP від liximomo (1,3+ млн встановлень). Помилку 550 SSL/TLS required on the control channel у ньому розібрано в issue #872.

Після встановлення розширення виконайте Ctrl+Shift+PSFTP: Config, відкриється файл sftp.json. Приведіть його до такого вигляду:

1{
2 "name": "Мой сервер",
3 "host": "ваш.сервер.com",
4 "protocol": "ftp",
5 "port": 21,
6 "secure": true,
7 "username": "логин",
8 "password": "пароль",
9 "remotePath": "/",
10 "uploadOnSave": true
11}

Параметр secure: true — це прямий аналог rejectUnauthorized: false із .ftpconfig. Він каже розширенню використовувати FTPS і не обривати з’єднання при самопідписаному сертифікаті.

Якщо сервер використовує implicit FTPS (порт 990), замініть protocol на ftps і port на 990. Збережіть sftp.json, виконайте SFTP: Download Project, розширення підключиться і завантажить вміст remotePath.

Рішення 3: FileZilla та інші GUI-клієнти

У GUI-клієнтах проблема вирішується ще простіше, на рівні інтерфейсу. У FileZilla:

  • Відкрийте Site Manager (Ctrl+S).
  • Виберіть підключення, у полі Protocol перемкніть із FTP на FTP over TLS (explicit).
  • При першому підключенні FileZilla покаже діалог із відбитком сертифіката, натисніть Trust this certificate і позначте «Always trust».

Той самий принцип працює у WinSCP, Cyberduck і будь-якому сучасному FTP-клієнті: явно вкажіть протокол FTPS і прийміть сертифікат вручну. Жодних конфігурацій, тільки інтерфейс.

Коли НЕ варто вимикати перевірку сертифіката

rejectUnauthorized: false — це свідоме послаблення безпеки. Ви кажете клієнту: «приймай БУДЬ-ЯКИЙ сертифікат, навіть підробний». Це припустимо у трьох випадках:

  • Локальний dev-сервер або staging-оточення, недоступне з інтернету.
  • Ваш власний VPS, де ви точно знаєте походження сертифіката.
  • Тестовий контур за корпоративним VPN.

На бойовому сервері в продакшені із самопідписаним сертифікатом краще витратити 15 хвилин і налаштувати Let's Encrypt, безплатний SSL-сертифікат, який визнають усі клієнти без rejectUnauthorized: false.

Подивіться короткий туторіал з SFTP-підключення у VS Code, усі кроки від встановлення розширення до першого з’єднання з сервером:

⁉️🤔 Часті запитання

Помилка залишилася після secure: true, що ще перевірити?

Першим ділом звірте порт. Explicit FTPS працює на порту 21, implicit, на 990. Якщо сервер адміна вимагає implicit FTPS, а ви вказали protocol: "ftp" із port: 21, з’єднання не підніметься, скільки не змінюйте secureOptions. Перевірте в панелі хостингу або спитайте адміна, який саме режим FTPS на сервері.

Чи можна використовувати SFTP замість FTPS?

Так, і це кращий варіант. SFTP (SSH File Transfer Protocol) працює поверх SSH, а не FTP, тому проблеми з SSL-сертифікатами для нього не існує в принципі. Якщо сервер дає SSH-доступ, використовуйте SFTP, а не FTPS. У тому ж .ftpconfig достатньо змінити protocol на sftp і port на 22.

Atom закрили, Remote FTP ще працює?

Пакет Remote FTP доступний у репозиторії Atom, але сам редактор не оновлюється з грудня 2022 і містить відомі вразливості. GitHub навіть відкликав сертифікати підпису коду для Atom у січні 2023. Якщо Atom у вас ще запускається, мігруйте на форк Pulsar, він тягне ті самі пакети й конфігурації без змін.

А що щодо VS Code Remote SSH?

Remote SSH, чудова альтернатива FTP-підключенням, якщо сервер на Linux і є SSH-доступ. Ви працюєте з файлами напряму, без синхронізації та мороки із сертифікатами. Але для shared-хостингів, де SSH закритий, а доступ лише через FTP, рішення з цього поста залишаються актуальними.

Помилка SSL/TLS required on the control channel (не data channel) — це те саме?

Так, різниця лише в каналі, на якому стався обрив. Control channel, канал команд (автентифікація, навігація), data channel, передавання файлів. Сервер може вимагати TLS на будь-якому з них. Рішення ідентичне: secure: true + rejectUnauthorized: false у конфігурації.

Помилка залишилася: підсумковий чекліст

Пройдіться за пунктами, один із них закриє проблему:

  • Протокол, secure: true у конфігурації (.ftpconfig або sftp.json) стоїть?
  • Порт, explicit FTPS = 21, implicit = 990, SFTP = 22. Звірте з налаштуваннями сервера.
  • rejectUnauthorized, самопідписаний сертифікат без цієї опції НЕ пройде перевірку Node.js.
  • GUI-клієнт, перемкнули Site Manager на FTP over TLS (explicit) і вручну прийняли сертифікат?
  • SFTP замість FTPS, якщо є SSH-доступ, забудьте про FTP і переходьте на SFTP.

Якщо все перепробували, а помилка висить, найімовірніше, сервер налаштований на implicit FTPS (порт 990), а клієнт стукає на 21. Уточніть у хостинг-провайдера потрібний режим і порт.

Ця помилка, не баг редактора, а особливість рукостискання TLS із самопідписаним сертифікатом. Після правильного налаштування конфігурації вона зникає на будь-якому клієнті: хоч в Atom 2018 року, хоч у Pulsar 2026-го, хоч у VS Code.