Filezilla FTP服务器无法检索目录列表

时间:2014-07-04 04:25:35

标签: ftp filezilla

我正在运行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

这继续在本地工作,但远程连接时却没有...我该如何解决这个问题?

21 个答案:

答案 0 :(得分:120)

我刚刚在站点管理器中将加密从“使用显式FTP over TLS(如果可用)”改为“仅使用普通FTP”(不安全),它可以正常工作!

答案 1 :(得分:35)

档案> 网站管理员>选择您的网站> 转移设置> 有效

适合我。

答案 2 :(得分:25)

将port命令发送到服务器时,您要求服务器连接到您(在远程网络上)。如果远程网络也有NAT路由器,并且您没有使用PORT命令端口转发您发送的端口,则服务器将无法与您联系。

最常见的解决方案是将PASV命令发送到服务器而不是PORT命令。 PASV命令将要求服务器创建一个侦听套接字并接受来自远程机器的连接以建立数据连接。

要使PASV命令起作用,您还需要为无源数据连接端口转发一系列端口。应在FileZilla文档中列出被动连接端口(需要转发)。

答案 3 :(得分:19)

此处的大部分答案都涉及配置,实际上只需在主机上添加sftp(见下图)即可立即修复此类问题,对我有用。

enter image description here

另请注意,如果您关注Vaggelis guide,则会降低安全性,ftp优于使用普通import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Stack; public class FieldGenerator { private int _width; private int _height; private Cell[][] _field; public FieldGenerator(int width, int height){ _width = width; _height = height; _field = new Cell[height][width]; } public Cell[][] getField(){ Random rand = new Random(System.currentTimeMillis()); int total = _width * _height; for(int y = 0; y < _height; y++){ for(int x = 0; x < _width; x++){ _field[y][x] = new Cell(cellstate.UNWALKABLE, x, y); } } int xStart = rand.nextInt(_width); int yStart = rand.nextInt(_height); Cell currentCell = _field[yStart][xStart]; currentCell.setCellstate(cellstate.STARTINGPOINT); Stack<Cell> stack = new Stack<Cell>(); int visited = 1; while (visited < total){ List<Cell> neighbourList = getNeighbours(currentCell); if(neighbourList.size() > 0){ //1 or more neighbours with walls intact Cell randNeighbour = neighbourList.get(rand.nextInt(neighbourList.size())); clearWallBetween(currentCell, randNeighbour); stack.push(currentCell); currentCell = randNeighbour; visited++; if(visited >= total) placeEndPoint(findCellByState(cellstate.STARTINGPOINT)); }else{ if(!stack.isEmpty()) { currentCell = stack.pop(); }else { placeEndPoint(findCellByState(cellstate.STARTINGPOINT)); return _field; } } } return _field; } private List<Cell> getNeighbours(Cell searchCell){ List<Cell> retList = new ArrayList<Cell>(); int x = searchCell.getx(); int y = searchCell.gety(); if(findCellByCoordinates(x, y-2) != null && findCellByCoordinates(x, y-2).getCellstate() == cellstate.UNWALKABLE){ //Top retList.add(findCellByCoordinates(x, y-2)); } if(findCellByCoordinates(x-2, y) != null && findCellByCoordinates(x-2, y).getCellstate() == cellstate.UNWALKABLE) { //Left retList.add(findCellByCoordinates(x-2, y)); } if(findCellByCoordinates(x+2, y) != null && findCellByCoordinates(x+2, y).getCellstate() == cellstate.UNWALKABLE) { //Right retList.add(findCellByCoordinates(x+2, y)); } if(findCellByCoordinates(x, y+2) != null && findCellByCoordinates(x, y+2).getCellstate() == cellstate.UNWALKABLE) { //Bottom retList.add(findCellByCoordinates(x, y+2)); } return retList; } private void placeEndPoint(Cell startcell){ Random rand = new Random(System.currentTimeMillis()); int startx = startcell.getx(); int starty = startcell.gety(); int geny = 0; int genx = 0; do{ genx = rand.nextInt(_width); geny = rand.nextInt(_height); }while((startx == genx && geny == starty) || _field[geny][genx].getCellstate() == cellstate.UNWALKABLE); _field[geny][genx].setCellstate(cellstate.ENDINGPOINT); } private Cell findCellByCoordinates(int xcoord, int ycoord){ if(xcoord >= _width || xcoord < 0 || ycoord >= _height || ycoord < 0) { return null; }else{ return _field[ycoord][xcoord]; } } private Cell findCellByState(cellstate searchstate){ for (int y = 0; y < _height; y++){ for (int x = 0; x < _width; x++) { if(_field[y][x].getCellstate() == searchstate){ return _field[y][x]; } } } return null; } private void clearWallBetween(Cell cell1, Cell cell2){ if(cell2.getCellstate() != cellstate.STARTINGPOINT || cell2.getCellstate() != cellstate.ENDINGPOINT) cell2.setCellstate(cellstate.WALKABLE); int x = ((cell1.getx() + cell2.getx()) / 2); int y = ((cell1.gety() + cell2.gety()) / 2); _field[y][x].setCellstate(cellstate.WALKABLE); } }

  

我刚刚在站点管理器中将加密从“使用显式FTP over TLS(如果可用)”改为“仅使用普通FTP”(不安全),它可以正常工作!

答案 4 :(得分:9)

好的,这帮了很多,我找不到修复。

简单地说,我已经将FTP端口转发到我的服务器。 (默认值为14147,我将以此为例)

转到编辑&gt;一般设置,听力端口应该是您使用的端口,在本例中为14147。

然后转到被动模式设置,我选中了“使用自定义端口”,然后输入范围50000 - 50100.

然后在您的路由器上,将50000 - 50100端口转发到本地服务器IP。

我在默认情况下保留的IPv4特定设置,重新连接了我的客户端,然后bam现在显示文件列表。

确保您的服务器防火墙的入站规则设置为接受14147和50000-50100。

基本上是埃文所说的。我无法证明打开这些端口的安全性,但这最终让我的Filezilla客户端和服务器进行通信和查看文件。希望这有助于某人。

答案 5 :(得分:9)

我的经验是Filezilla的新版本有这个问题,但不是旧版本。我正在使用Filezilla,一切都很好。升级到版本3.10后,我遇到了这个问题,我无法解决它。我卸载了3.10版本并重新安装了3.8版本,问题就消失了!现在我使用的是3.8版本,一切正常。即使我不得不使用旧版本,我也不会遇到任何问题。 ;)

尝试安装旧版本,不要升级,无论多么奇怪。

答案 6 :(得分:4)

我通过进入站点管理器解决了这个问题 - &gt;选择了Failed to retrieve directory listing - &gt;的连接切换到“传输设置”选项卡并将“传输模式”设置为“活动”而不是“默认”。还要检查您是通过VPN连接还是类似的连接,这也可能会产生干扰。

答案 7 :(得分:3)

我遇到了同样的问题 - 对我来说有用 - 在Windows操作系统中 - 将FileZilla添加为防火墙例外 - 允许程序通过防火墙功能

答案 8 :(得分:2)

我遇到了同样的问题,这是由于防火墙造成的。我使用Windows服务器,

您可以允许程序的连接权限吗,与端口21,22的权限保持一致。

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

答案 9 :(得分:1)

我有Filezilla 3.6,并且与OP有同样的问题。我升级到3.10.3认为它会修复它。不,还是一样。

然后我对选项进行了一些挖掘,对我有用的是:

编辑 - &gt;设置 - &gt; FTP - &gt;被动模式并从“退回到活动模式”切换到“使用服务器的外部IP地址”

答案 10 :(得分:1)

我遇到了与FZ-client相同的问题,而我的笔记本通过WLAN和DSL /路由器连接。在我应用的站点管理器连接设置中,主机:ftp.domain-name,加密:仅使用普通FTP(不安全)和用户:用户名@域名。然后FTP客户端成功连接到我的网站服务器。 可以在Web服务器的CPanel中找到更多FTP连接信息。希望这会有所帮助。

答案 11 :(得分:0)

我在云中托管的服务器遇到了这个问题。我一年只需要服务器几次,所以当我启动服务器时,IP地址会发生变化。然后必须在FTP服务器被动模式设置上更新新的IP地址!

最新版本的Filezilla工作正常!

答案 12 :(得分:0)

升级到3.10后我也遇到了问题。我安装了版本3.6.02并安装了它。问题解决了。

答案 13 :(得分:0)

如果您使用的是VestaCP,则可能需要在Linux防火墙上允许端口12000-12100 TCP。

您可以在VestaCP设置中执行此操作。

答案 14 :(得分:0)

检查路由器上的IP地址是否与ftp服务器上的IP地址相同。如果不确定它是相同的。这应该完美。

答案 15 :(得分:0)

对于我来说,重新启动路由器(我以前用来连接到互联网)是可行的。我认为太多的连接来自同一IP地址,当我重新启动路由器时,可能分配了一个新IP,现在一切正常,被动模式在目录列表中提供了良好的速度。

答案 16 :(得分:0)

运行具有高级安全性的Windows Defender防火墙

开始>运行:wf.msc

enter image description here

答案 17 :(得分:0)

我为我使用SFTP及其工作。

答案 18 :(得分:0)

我的问题也是防火墙。我正在使用带有 WHM/cPanel 的 Linux 服务器。将我的 IP 添加到快速允许解决了我的问题。我没有更新 Filezilla,我认为服务器没有任何应该导致它的变化。但是,我确实移动了并且我的 IP 发生了变化,所以也许这就是问题所在。祝大家好运遇到这个令人讨厌的问题。

how to access WHM firewall config

答案 19 :(得分:-1)

现在在FileZilla中,创建一个新帐户 1.主机是FTP地址 - 例如ftp.somewhere.com 2.协议是“SFTP-SSH文件传输协议” 3.用户ID是您的Bluehost用户ID 4.密码是您的Bluehost密码 5.单击“连接”以建立与目录列表的连接!

这解决了3.10的问题。我很高兴为我未来的所有文件传输安全访问。它应该在将来防止安全问题。

答案 20 :(得分:-1)

对我有用:

常规->加密->仅使用普通FTP

传输设置->传输模式->有效

考虑到它是非常不安全的,只能用于测试。