Вопрос или проблема
При установке TLSRequired
в on
вместо off
в моем proftp tls.conf
, я всегда получаю
550 SSL/TLS required on the data channel
ошибку при попытке подключения. Я пробовал как с filezilla, так и с winscp, и версиями proftpd 1.3.3a
и 1.3.4a
Вот мой файл tls.conf:
<IfModule mod_tls.c>
TLSEngine on
TLSProtocol SSLv23 TLSv1
TLSRSACertificateFile /etc/ssl/private/cert.crt
TLSRSACertificateKeyFile /etc/ssl/private/cert.key
TLSVerifyClient off
TLSRequired on
</IfModule>
Ошибка возникает после выполнения команды FTP-LIST
. Вот краткий отрывок из отладочного лога в filezilla:
Command: PASV
Trace: CFtpControlSocket::OnReceive()
Response: 227 Entering Passive Mode (78,46,187,75,208,71).
Trace: CFtpControlSocket::TransferParseResponse()
Trace: CFtpControlSocket::SendNextCommand()
Trace: CFtpControlSocket::TransferSend()
Command: LIST
Trace: CFtpControlSocket::OnReceive()
Response: 550 SSL/TLS required on the data channel
Trace: CFtpControlSocket::TransferParseResponse()
Trace: CFtpControlSocket::ResetOperation(2)
Trace: CControlSocket::ResetOperation(2)
Trace: CFtpControlSocket::ParseSubcommandResult(2)
Trace: CFtpControlSocket::ListSubcommandResult()
Trace: CFtpControlSocket::ResetOperation(2)
Trace: CControlSocket::ResetOperation(2)
Error: Directory listing could not be retrieved
Недавно я столкнулся с аналогичной проблемой, но не с filezilla. Когда я использую “Filezilla” в качестве FTP-клиента, все было хорошо. Но по какой-то причине внутренний FTP-клиент phpstorm имел вышеупомянутую проблему, он мог подключаться, но не мог вывести список каталога.
В proftpd.conf я использовал следующую конфигурацию, и теперь FTP-клиент phpstorm может подключаться к FTP-серверу. Однако для нижеследующей опции шифрование канала данных не требуется:
TLSRequired ctrl
Другим возможным решением может быть установка FTP-соединения в режим “пассивного”, поскольку это проблема со сложением каталога.
Для тех, кто сейчас сталкивается с этой проблемой, с ProFTPD и FTPS-клиентами, такими как FileZilla и WinSCP, аналогичное обсуждение было зарегистрировано на форумах ProFTPD здесь.
Коренной причиной было то, что в другом месте в proftpd.conf
@Zulakis была секция <Limit>
, охватывающая команду FTP PROT
. Команда PROT
является частью FTPS и используется клиентами FTPS для информирования сервера о том, чтобы защитить запрашиваемую передачу данных. Если секция <Limit>
в proftpd.conf
говорила ProFTPD отклонять эту команду PROT
, но политика TLS, настроенная через TLSRequired
, заявляла, что SSL/TLS защита была обязательной для передачи данных, это бы привело к вышеупомянутой ошибке, сообщаемой клиенту.
Для решения этой проблемы была подана и исправлена ошибка ProFTPD Bug#3887, начиная с ProFTPD 1.3.4c (и ProFTPD 1.3.5).
Надеюсь, это поможет!
Ответ или решение
Ошибка "550 SSL/TLS required on the data channel" при использовании ProFTPD с установленным параметром TLSRequired
Ошибка "550 SSL/TLS required on the data channel" при попытке использовать FTP-клиент после установки параметра TLSRequired
в конфигурации ProFTPD может быть результатом нескольких факторов. Давайте подробно рассмотрим эту проблему и возможные решения.
Описание ситуации
Вы столкнулись с ошибкой после перехода от использования TLSRequired off
к TLSRequired on
в файле конфигурации tls.conf
. Это изменение обязывает клиентов использовать защищенные каналы для передачи данных. Ошибка возникает в основном при выполнении команды LIST
для получения списка директорий, как видно из логов FileZilla:
550 SSL/TLS required on the data channel
Анализ конфигурации TLS
Ваш файл tls.conf
в настоящее время выглядит следующим образом:
<IfModule mod_tls.c>
TLSEngine on
TLSProtocol SSLv23 TLSv1
TLSRSACertificateFile /etc/ssl/private/cert.crt
TLSRSACertificateKeyFile /etc/ssl/private/cert.key
TLSVerifyClient off
TLSRequired on
</IfModule>
Данная конфигурация активирует TLS, однако необходимо учитывать дополнительные настройки в основном файле proftpd.conf
, которые могут конфликтавать с требованием защиты данных.
Проблема с PROT
Как упоминается в обсуждениях на форумах ProFTPD, одной из вероятных причин данной ошибки может быть наличие секции <Limit>
в proftpd.conf
, которая запрещает команду PROT
. Эта команда служит для указания на необходимость защиты канала передачи данных. Если команда PROT
отклоняется, но TLSRequired
указывает на необходимость шифрования, это приведет к ошибке, которую вы наблюдаете.
Решения
-
Измените конфигурацию PROT в
proftpd.conf
:
Убедитесь, что в вашем конфигурационном файле отсутствуют ограничения на использование командыPROT
. Если такие ограничения есть, их нужно убрать или изменить:<Limit PROT> AllowAll </Limit>
-
Проверьте настройки режима передачи:
Если вы используетеPASV
(пассивный режим), убедитесь, что ваш сервер правильно настроен для работы с этим режимом. Иногда ошибка может заключаться в том, что клиент FTP не может установить защищенное соединение для передачи данных. -
Обновление ProFTPD:
Проверьте, какую версию ProFTPD вы используете. Если это версия 1.3.3a или 1.3.4a, возможно, следует обновить до более новой версии, где исправлены известные ошибки, такие как приведенная вами ссылка на Bug#3887. -
Настройка TLSRequired:
Если проблема все еще не решена, вы можете временно установитьTLSRequired ctrl
и посмотреть, будет ли это работать как временное решение. Это позволит поддерживать шифрование для управления, но не для передачи данных.
Заключение
Ошибка "550 SSL/TLS required on the data channel" может возникать из-за нескольких конфигурационных нюансов в ProFTPD, особенно связанных с командами, управляющими защищенной передачей данных. Проверив настройки PROT
, обновив ProFTPD и убедившись в правильной конфигурации TLS, вы сможете устранить эту проблему. Всегда стоит вести журнал изменений и тестировать каждую настройку, чтобы удостовериться в правильности работы сервера.