我在 IIS 中设置了一个 FTP 服务器。数据通道端口范围设置为 5000-6000,并且“防火墙的外部 IP 地址”设置为正确的公共 IP 地址。在此 VM 的 Azure 防火墙中,端口 20、21 和 5000-6000 均已打开。我暂时禁用了 Windows VM 中的防火墙,以尝试使其正常工作。
如果我不使用 SSL 从 FileZilla 连接,则一切正常。如果我使用 SSL 连接,则会发生以下情况(我已将用户名和 IP 地址更改为 xx's)
Status: Connecting to x.x.x.x:21...
Status: Connection established, waiting for welcome message...
Response: 220 Microsoft FTP Service
Command: AUTH TLS
Response: 234 AUTH command ok. Expecting TLS Negotiation.
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Command: USER xx
Response: 331 Password required
Command: PASS ************
Response: 230 User logged in.
Command: OPTS UTF8 ON
Response: 200 OPTS UTF8 command successful - UTF8 encoding now ON.
Command: PBSZ 0
Response: 200 PBSZ command successful.
Command: PROT P
Response: 200 PROT command successful.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I.
Command: PASV
Response: 227 Entering Passive Mode (x,x,x,x,237,114).
Command: LIST
Response: 150 Opening BINARY mode data connection.
Error: Connection timed out after 20 seconds of inactivity
Error: Failed to retrieve directory listing
Status: Disconnected from server
如果我不使用 SSL 连接到服务器,那么就不会出现这个问题,文件会被列出,而且我可以上传文件,一切正常。
答案1
Response: 227 Entering Passive Mode (x,x,x,x,237,114).
IIS 告诉您的客户端连接到端口 237*256+114=60786。
可能有些防火墙会阻止这种情况,但在明文情况下,防火墙具有 FTP 模式,可以监听端口并允许流量。TLS 会阻止防火墙读取这些数据,因此它不起作用。
一般来说,不要使用 FTP。它已经过时了。