当在我的proftp tls.conf设置TLSRequired为on而不是off时,我总是得到一个
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中debugging日志的简短摘录:
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客户端时,一切都很好。 但由于某种原因phpstorm的内部ftp客户端有上述问题,它可以连接,但不能列出目录。
在proftpd.conf中我使用了下面的configuration,现在phpstorm的ftp客户端可以连接到ftp服务器。 但是,数据通道不需要使用以下选项进行encryption:
TLSRequired ctrl
另一个可能的解决scheme可能是翻转ftp连接到“被动”,因为这是一个目录列表问题。
对于那些现在发现这个问题的人来说,在ProFTPD和FTPS客户端(如FileZilla和WinSCP)中,在这里的ProFTPD论坛中也有相同的讨论。
根本原因是在@Zulakis的proftpd.conf中的其他地方 ,有一个覆盖FTP PROT命令的<Limit>部分。 PROT命令是FTPS的一部分,由FTPS客户端用来通知服务器保护请求的数据传输。 如果proftpd.conf的<Limit>部分告诉ProFTPD 拒绝该PROT命令, 但是通过TLSRequiredconfiguration的TLS策略表示数据传输需要 SSL / TLS保护,则会导致向客户端报告上述错误。
为了解决这个问题,从ProFTPD 1.3.4c(和ProFTPD 1.3.5)开始,ProFTPD Bug#3887被提交和修复。
希望这可以帮助!