当我在 proftp 中设置TLSRequired
为on
而不是 时,我总是得到一个off
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
答案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)。
希望这可以帮助!