FilezillaFTP 服务器检索目录列表失败

我正在运行 Filezilla Server 0.9.45 beta 版来远程管理我的服务器。 设置好之后,我测试了使用 IP 127.0.0.1连接到它,它成功地工作了。但是,为了远程连接到服务器,我将端口转发到端口21,并尝试使用计算机的 IP 进行连接。

Status: Connecting to [My IP]:21...
Status: Connection established, waiting for welcome message...
Response:   220 Powered By FileZilla Server version 0.9.45 beta
Command:    USER hussain khalil
Response:   331 Password required for user
Command:    PASS *********
Response:   230 Logged on
Status: Connected
Status: Retrieving directory listing...
Command:    CWD /
Response:   250 CWD successful. "/" is current directory.
Command:    PWD
Response:   257 "/" is current directory.
Command:    TYPE I
Response:   200 Type set to I
Command:    PORT 192,168,0,13,205,63
Response:   200 Port command successful
Command:    MLSD
Response:   150 Opening data channel for directory listing of "/"
Response:   425 Can't open data connection for transfer of "/"
Error:  Failed to retrieve directory listing

这继续工作在本地,但不是当远程连接... 我该如何解决这个问题?

363742 次浏览

When you send the port command to your server, you are asking the server to connect to you (on the remote network). If the remote network also has a NAT router, and you have not port-forwarded the port you are sending with your PORT command, the server will not be able reach you.

The most common solution would be to send the PASV command to the server instead of the PORT command. The PASV command will ask the server to create a listening socket and accept a connection from the remote machine to establish the data connection.

For the PASV command to work, you will also need to port-forward a range of ports for the passive data connections. The passive connection ports (which need to be forwarded) should be listed in the FileZilla documentation.

Ok this helped a lot, I couldn't find a fix.

Simply, I already port forwarded the FTP port to my server. (The default is 14147, I'll use this as example)

Go to Edit > General settings, Listening port should be the one your using, in this case 14147.

Then go to Passive Mode Settings, I checked "Use Custom Port", and entered in the Range 50000 - 50100.

Then on your router, port forward 50000 - 50100 to the server IP locally.

IPv4 specific settings I left at default, reconnected my client, and bam now the file listing appears.

Ensure your servers firewall has an inbound rule set to accept 14147, and 50000-50100.

Basically what Evan stated. I can't attest to the security of opening these ports, but this is what finally got my Filezilla client and server to communicate and view files. Hope this helps someone.

My experience is that the new version of Filezilla has this problem, but not the old versions. I was using Filezilla and everything was OK. After I upgraded to version 3.10, I faced this problem and I couldn't solve it. I uninstalled version 3.10 and reinstalled version 3.8 and the problem was gone! Now I am using version 3.8 and everything is OK. I prefer to face no problems even if I have to use old versions. ;)

Try installing the old version and do not upgrade, however odd that may sound.

I also had the problem after upgrading to 3.10. I had versoin 3.6.02 hanging around and installed that. Problem solved.

Now in FileZilla, create a new Account 1. Host is the FTP Address - e.g. ftp.somewhere.com 2. Protocol is "SFTP-SSH File Transfer Protocol" 3. User ID is your Bluehost User Id 4. Password is your Bluehost Password 5. Click "Connect" to establish a connection with Directory Listing!

This resolve the issue with 3.10 for me. And I'm glad to have the Secure Access for all of my future file transfers. It should prevent security issues in the future.

I just changed the encryption from "Use explicit FTP over TLS if available" to "Only use plain FTP" (insecure) at site manager and it works!

I experienced the same problem with FZ-client, while my notebook connected via WLAN and DSL/Router. In the Site Manager connection settings I was applied Host:ftp.domain-name, Encryption:Only use plain FTP (insecure) and User:username@domain-name. Then the FTP-client succesfully connected to my website server. More FTP connection information could be found in the CPanel of the webserver. Hope this helps.

I had the same problem-what worked for me -in Windows OS-is adding FileZilla as a firewall exception-under allow a program through firewall features

I had Filezilla 3.6, and had the same issue as OP. I have upgraded to 3.10.3 thinking it would fix it. Nope, still the same.

Then I did a bit digging around the options, and what worked for me is:

Edit -> Settings -> FTP -> Passive Mode and switched from "Fall back to active mode" to "Use the server's external IP address instead"

Most of the answers here involves configuring, actually just by adding sftp:// on your host (see below image) you can instantly fixed that kind of problem, works for me.

enter image description here

And also take note that if you follow Vaggelis guide you are lowering your security, sftp is better than using plain ftp.

I just changed the encryption from "Use explicit FTP over TLS if available" to "Only use plain FTP" (insecure) at site manager and it works!

I solved this by going into Site Manager -> selected the connection that Failed to retrieve directory listing -> Switched to tab "Transfer Settings" and set "Transfer Mode" to "Active" instead of "Default". Also check if you are connected via VPN or anything similar, this can also interfere.

I had that problem with my server hosted in the cloud. I only need the server a couple of times a year and so when I boot up my server the IP address changes. The new IP address then has to be updated on FTP Server passive mode settings!

The latest version of Filezilla works just fine!

File > Site Manager > Select your site > Transfer Settings > Active

Works for me.

If you're using VestaCP, you might want to allow ports 12000-12100 TCP on your Linux Firewall.

You can do this in VestaCP settings.

Check if the ip address on the router is the same with the one on the ftp server. If not make sure it is the same. This should works perfectly.

I've had the same problem, This was due to the firewall. I use windows server,

Can you allow the connection permission for program, intead of port 21,22 permission.

Windows Firewall with Advanced Security->
Inbound Rules->
Add Rule->
Program->
"Select Filezilla path with Browse button"->
Allow the Connection

In my case, restarting my router which I used to connect to the internet worked. I think too much of connections were going from the same IP Address and when I restarted my router, possibly a new IP was assigned and now everything works fine, and passive mode gives good speed in directory listing.

Run Windows Defender Firewall with Advanced Security

Start > Run : wf.msc

enter image description here

It worked for me:

General -> Encryption -> Only use plain FTP

Transfer settings -> Transfer Mode -> Active

Consider that it is very insecure, and must be used only for testing.

My issue was also the firewall. I'm using a Linux server with WHM/cPanel. Adding my IP to the quick allow solved my issue. I hadn't updated Filezilla and I don't think there were any changes to the server that should have caused it. However, I did move and my IP changed so maybe that was the problem. Good luck to everyone else with this insanely annoying issue.

how to access WHM firewall config

The issue of mine was the same but the solution was a little different.

I used the AWS EC2 server to host the WHM service. And found that "the passive ports are enabled, but not these Ports are not found in my EC2 Security Group".

[root@94367392 ~]cPs# egrep -i passiveport /etc/pure-ftpd.conf

Output:

PassivePortRange 49152 65534

Now I moved ahead and opened the ports from 49152 to 65534 in the Security group of EC2 and the Filezilla problem related to "Failed to retrieve directory listing" was solved and it worked like a charm.

This cPanel doc is helpful.

I've seen solutions that involve granting FileZilla full access via windows firewall. This is an alternative to that, if you know the IP of the connecting system and it's static, simply grant it full access to all ports via windows firewall.

Windows Firewall, Inbound Rules > Create a Rule > All Local Ports > Scope > This IP Address (the IP of the connecting system).

To me this is much safer than granting full access to FileZilla to all incoming ip addresses.

Once you've completed your transfer, you can then disable the rule.

After about 2 hours experience;

  • Open > Windows Defender Firewall with Advanced Security
  • Select > Inbound Rules
  • Click > New Rule...
  • Choose > Custom
  • Choose > This program path:
  • Click > Browse
  • Find > filezilla-server.exe (possibly C:\Program Files\FileZilla Server)
  • Click > Open
  • Click > Next
  • Click > Next
  • Click > Next (Allow the connection is already selected)
  • Click > Next (if you do not need change)
  • Fill > Name
  • Click > Finish