我已经将 Ubuntu 10.04 桌面版作为 Web 服务器运行,并且刚刚安装了 vsftpd 并将其设置为允许 ascii_upload_enable 和 ascii_download_enable,并且还启用了 chroot_local_user、chroot_list_enable 和 chroot_list_file。
但是,我无法使用 FileZilla 从服务器获取文件列表,具体情况如下:
状态:正在解析 server.jonbevan.me.uk 的地址
状态:正在连接到 80.4.79.179:21...
状态:已建立连接,正在等待欢迎消息...
响应:220 欢迎使用 server.jonbevan.me.uk FTP 服务。
命令:USER jon
响应:331 请指定密码。
命令:PASS *********
响应:230 登录成功。
命令:OPTS UTF8 ON
响应:200 始终处于 UTF8 模式。
状态:已连接
状态:正在检索目录列表...
命令:CWD /home/jon
响应:250 目录更改成功。
命令:PWD
响应:257 "/home/jon"
命令:TYPE I
响应:200 正在切换到二进制模式。
命令:PASV
响应:227 进入被动模式 (80,4,79,179,196,13)
命令:LIST
响应:425 无法建立连接。
错误:无法检索目录列表
在 CuteFTP 中会发生这种情况:
命令:> [7/29/2010 3:23:43 PM] 列表
[7/29/2010 3:23:43 PM] 150 目录列表。
错误:> [7/29/2010 3:24:13 PM] 接受来自服务器的数据连接时发生超时(30000 毫秒)。
[7/29/2010 3:24:13 PM] 426 写入网络流失败。
错误:> [7/29/2010 3:24:13 PM] 收到已删除的响应。
你知道问题可能出在哪里吗?如果我遗漏了任何重要信息,请见谅。
答案1
同意 Luke404 的观点。检查您的 vsftpd.conf 是否配置了以下条目,并且您的防火墙是否允许 pasv_min 和 pasv_max 端口范围(10000 - 100010 只是一个例子)。如果对 conf 文件进行了更改,请记住重新启动服务。
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10010
pasv_address=[Public IP address of your server]
答案2
您正在使用 PASV 模式,因此您的客户端将尝试通过“随机”端口连接到服务器来传输数据,这包括文件传输和目錄清單。
它不工作的最可能的原因是无法建立用于数据传输的 PASV TCP 连接,通常是由于以下原因之一:
- 客户端防火墙阻止传出连接
- 服务器端的防火墙阻止高端口上的传入连接
- 服务器位于 NAT 后面,仅转发静态 ftp 端口 21、22,没有数据包检查来状态转发更高端口
答案3
我也遇到了同样的问题
解决了这个问题,编辑 /etc/sysconfig/iptables-config 的配置
在文件的开头,改变了这个参数:IPTABLES_模块
# Load additional iptables modules (nat helpers)
# Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES="ip_conntrack_ftp"
重启 iptables 后,可以在 FileZilla 中列出文件。希望对您有所帮助。