启用加密后,Netbeans 无法上传 FTP

启用加密后,Netbeans 无法上传 FTP

我最近换了一家新的网络主机,他们提供 FTP 而不是 SFTP。没问题,我的常规客户端 (WinSCP) 可以完美地处理这个问题,包括使用(显式)加密。但是,当我将 NetBeans 配置为在使用加密保存时自动将文件上传到那里时,启用 inc 时出现奇怪的错误。

220 ProFTPD Server ready.
AUTH TLS
234 AUTH TLS successful
USER my_username
331 Password required for my_username
PASS ******
230 User my_username logged in
PBSZ 0
200 PBSZ 0 successful
PROT P
200 Protection set to Private
TYPE I
200 Type set to I
CWD /domains/mydomain.org/public_html/dev2
250 CWD command successful
PWD
257 "/domains/mydomain.org/public_html/dev2" is the current directory
CWD /domains/mydomain.org/public_html/dev2/js
250 CWD command successful
PASV
227 Entering Passive Mode (185,182,56,157,137,191).
STOR examplefile.js.new
150 Opening BINARY mode data connection for examplefile.js.new
425 Unable to build data connection: Operation not permitted
PASV
227 Entering Passive Mode (185,182,56,157,138,255).
STOR examplefile.js.new
150 Opening BINARY mode data connection for examplefile.js.new
425 Unable to build data connection: Operation not permitted
PASV
227 Entering Passive Mode (185,182,56,157,139,229).
STOR examplefile.js.new
150 Opening BINARY mode data connection for examplefile.js.new
425 Unable to build data connection: Operation not permitted
DELE examplefile.js.new
250 DELE command successful
QUIT
221 Goodbye.

我很困惑。我可以完美登录,甚至可以 CWD/DELE,但我无法上传文件?一些谷歌搜索建议我切换到活动模式,但这只会导致一个永恒的同步消息,然后是超时。当关闭加密,甚至检查“仅加密身份验证过程”时,它都可以完美运行。但这不是我想要的,因为有时我需要在我的 PHP 配置文件中以纯文本形式传输密码。

我怎样才能让 Netbeans 正确地将文件上传到我的主机,就像其他程序(例如 WinSCP)所做的那样?我检查了 WinSCP 的日志,它们也加密了数据传输。

答案1

FTP 是一种使用单独连接传输数据并在控制连接内交换用于这些连接的端口的协议。这对防火墙来说非常成问题,因为它们要么需要允许广泛的可能端口(这会削弱防火墙的保护),要么必须检测将使用哪些端口并动态创建防火墙规则以允许特定的数据传输。后者是通过分析数据流并提取和分析 PORT 命令(主动模式)或对 PASV 的响应(被动模式)来完成的。

如果控制连接未加密,这种分析会很有效。但对于加密的控制连接,它就会失败,因为防火墙无法再清晰地看到 PORT 命令和对 PASV 的响应,因此会动态地为数据连接创建适当的防火墙规则。这会导致您看到的问题。

为了解决这个问题,FTPS(即通过 SSL 的 FTP,不同于通过 SSH 传输文件的 SFTP)提供了 CCC 命令,该命令可用于在身份验证完成后将控制通道切换回清除状态,从而使动态规则创建再次工作。但看起来 Netbeans 没有使用这个命令。我不熟悉 Netbeans 中的配置可能性,但我会寻找有关如何仅为身份验证或类似操作启用加密的选项。如果没有这样的选项,您可能运气不佳,需要禁用加密或削弱可能影响流量的防火墙。请注意,在某些情况下,没有真正的防火墙对问题负责,而是由路由器或 ISP 完成的 NAT 转换,通常也在移动或 DS-Lite 连接的环境中。

相关内容