31

我在亚马逊 ec2 上使用 fedora 实例安装了 vsftpd,它是最新版本,但出现错误:在 CuteFTP 中:

COMMAND:> PASV 227 Entering Passive Mode (192,168,10,46,14,20)
COMMAND:> LIST
ERROR:> Can’t connect to remote server. Socket error = #10065.
ERROR:> PASV failed, trying PORT.

在 Filezilla 中:

Command: PASV Response: 227 Entering Passive Mode (192,168,10,46,14,20)
Command: LIST Error: Connection timed out
Error: Failed to retrieve directory listing.

试图通过 Shell 连接并显示目录列表。

4

7 回答 7

69

刚刚遇到了同样的问题……这通常只影响使用被动模式的 GUI ftp 客户端(这很常见)。例如,当使用标准的 ftp 命令行工具时,我能够成功登录并将文件上传到我的 ftp 服务器。

纠正的步骤是:

  1. 将以下设置添加到 /etc/vsftpd.conf 文件中:

    pasv_enable=YES pasv_min_port=64000 pasv_max_port=64321 port_enable=YES

  2. 还要根据您的情况将以下配置块之一添加到您的 /etc/vsftpd.conf 文件中(无论哪种方式,这都需要解析为公共可访问 IP):

A:

pasv_address=<your-static-ip-most-likely-from-elastic-ips>
pasv_addr_resolve=NO

-或者-

乙:

pasv_address=<your-publicly-resolvable-host-name>
pasv_addr_resolve=YES
  1. 在 ec2 实例的安全组配置中,添加以下自定义入站 tcp 规则:
  • 为标准 ftp 启用端口 20-21
  • 启用上面配置部分中定义的被动端口(我使用 64000-64321)
  1. 重启你的 vsftpd 服务(取决于你的 linux 风格)

注意:pasv 端口范围应该在防火墙、NAT 之外可见

更多信息参考:

于 2012-08-07T00:07:03.383 回答
20

error: failed to retrieve directory listing在亚马逊 ec2 上,只需将传输模式更改为 active即可修复。

这篇文章解释了如何使用 filezilla 轻松完成它:

https://nabtron.com/error-while-connecting-to-amazon-ec2-via-ftp-solution/

于 2011-09-19T21:24:20.783 回答
4

对于我来说,使用版本 vsftpd-3.0.2-1.el5.x86_64.rpm 有助于以下设置:

pasv_enable=YES
pasv_min_port=64000
pasv_max_port=64321
port_enable=YES
pasv_address=<your-static-ip-most-likely-from-elastic-ips>
pasv_addr_resolve=NO

感谢龙达!

于 2014-09-23T12:43:35.953 回答
2

看看这个线程:

http://www.gosquared.com/liquidity/archives/936

于 2011-02-03T13:27:34.633 回答
2

这对我有用;

下面是中的配置/etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=ftp
pasv_enable=YES
pasv_min_port=13000
pasv_max_port=13100
port_enable=YES
pasv_address=AWS-IP-Address
pasv_addr_resolve=no

保存并重启服务

$ sudo service vsftpd restart

在安全组中打开以下端口

  • 来自 0.0.0.0/0 的自定义 TCP 20
  • 来自 0.0.0.0/0 的自定义 TCP 21
  • 来自 0.0.0.0/0 的自定义 TCP 13000
  • 来自 0.0.0.0/0 的自定义 TCP 13100

从 FileZilla FTP 客户端连接时,您可能会遇到以下错误;

Error:  Connection timed out
Error:  Failed to retrieve directory listing

解决这个问题;

  • 打开 Filezilla,转到编辑 -> 设置
  • 单击连接-> FTP:选择活动
  • 单击连接 -> FTP -> 活动模式:选择“向您的操作系统询问外部 IP 地址”
  • 单击连接-> FTP-> 被动模式:选择回退到主动模式按确定。

再次尝试连接到您的 FTP 站点。

于 2016-04-24T13:50:12.073 回答
0

如果可能,您想使用被动模式。正如我在 Bucho 链接到的文章中所说,您只需为 PASV 模式定义一个端口范围并在您的 EC2 安全组中打开该范围

于 2011-11-17T18:37:41.153 回答
0

如果在 vsftpd.conf 中有如下配置:

pasv_enable=YES
pasv_min_port=64000
pasv_max_port=64321

尝试打开防火墙:

# yum install -y epel-release
# yum install -y ufw
# sudo ufw allow from any to any proto tcp port 64000:64321

sudo iptables -A INPUT -p tcp –dport 64000:64321 -j ACCEPT
于 2019-10-16T10:01:56.790 回答