Proftpd TLSRequired 导致“数据通道上需要 550 SSL/TLS”错误

Proftpd TLSRequired 导致“数据通道上需要 550 SSL/TLS”错误

当我在 proftp 中设置TLSRequiredon而不是 时,我总是得到一个offtls.conf

550 SSL/TLS required on the data channel

尝试连接时出错。我尝试了 filezilla 和 winscp 以及 proftpd 版本1.3.3a1.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

答案1

我最近遇到了类似的问题,但不是 filezilla。当我使用“Filezilla”作为我的 ftp 客户端时,一切都很好。但由于某种原因,phpstorm 的内部 ftp 客户端出现了上述问题,它可以连接但无法列出目录。

在 proftpd.conf 中我使用了以下配置,现在 phpstorm 的 ftp 客户端可以连接到 ftp 服务器。但是,数据通道不需要使用以下选项进行加密:

TLSRequired                    ctrl

另一个可能的解决方案是将 ftp 连接切换为“被动”,因为这是一个目录列表问题。

答案2

对于那些现在使用 ProFTPD 和 FTPS 客户端(如 FileZilla 和 WinSCP)发现此问题的人来说,ProFTPD 论坛中也报告了同样的讨论这里

根本原因是别处在@Zulakis的文章中proftpd.conf,有一<Limit>节介绍了FTPPROT命令。该PROT命令是FTPS的一部分,由FTPS客户端用来通知服务器保护请求的数据传输。<Limit>如果proftpd.conf拒绝PROT命令,通过配置的 TLS 策略TLSRequired表示 SSL/TLS 保护必需的对于数据传输,就会导致向客户端报告上述错误。

为了解决这个问题,ProFTPD错误#3887已归档并修复,截至 ProFTPD 1.3.4c(和 ProFTPD 1.3.5)。

希望这可以帮助!

相关内容