我有一个安装了 vsftp 的 ec2 实例。守护进程正在监听端口 21:
$ sudo netstat -tulpn
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1730/vsftpd
当我连接到实例 IP 地址本身时,我能够通过 filezilla 进行 ftp 和上传文件。但是,当我将实例添加到经典负载均衡器并尝试连接到负载均衡器时,我收到以下错误:
Command: PASV
Response: 227 Entering Passive Mode (3,23,102,171,4,6).
Command: LIST
Response: 425 Security: Bad IP connecting.
Error: Failed to retrieve directory listing
我在 vsftpd.config 中更改的唯一选项如下:
listen=YES
# listen_ipv6=YES
write_enable=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=3.23.102.171
所有其他选项均为默认选项。服务器上没有安装任何其他程序,并且安全组显然允许访问。
这是什么错误?我该如何解决?
答案1
我认为您几乎已经解决了所有问题。但可能缺少了一些小问题。
要在负载均衡器后运行 vsftpd,您需要:
启用被动模式并设置端口:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
显然这些端口需要公开在您的负载均衡器上。
设置 pasv_address 并连接到它:
pasv_address
您应该像之前一样设置一个。但请确保:
- 您正在使用 FTP 客户端上的这个地址进行连接:
ftp same-address-as-config
- 如果你的地址是一个名字,添加
pasv_addr_resolve=YES
希望能帮助到你。
答案2
我遇到了同样的错误,只需重新启动 vsftpd 即可解决。
我当时正在使用 RHEL 6 服务器。因此我使用了以下命令
service vsftpd restart
然后我尝试通过 ftp 发送文件,并且运行正常。
我不确定它是否有帮助解决上述问题但值得尝试一下。