每当我在centos上安装vsftpd时,我只为用户设置jail环境,rest是vsftpd的默认configuration。 我创build用户,并尝试与Filezila FTP客户端连接,但我无法连接被动模式。 我总是将“传输设置”更改为活动模式,以成功连接到FTP服务器,否则我会得到
Error: Failed to retrieve directory listing
那么有没有办法改变vsftp.conf文件中的任何指令,我们可以使用被动模式连接到服务器?
更新:感谢所有的答案给出的答案。
要为vsftpdconfiguration被动模式,您需要在vsftpd.conf中设置一些参数。
pasv_enable=Yes pasv_max_port=10100 pasv_min_port=10090
这使被动模式,并限制它使用十一个端口进行数据连接。 这很有用,因为您需要在防火墙上打开这些端口。
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
如果testing完这一切后,然后保存防火墙的状态
service iptables save
这将更新/etc/sysconfig/iptables
文件。
要做到这一点是CentOS 7你必须使用新的firewalld,而不是iptables:
find您的区域:
# firewall-cmd --get-active-zones public interfaces: eth0
我的区域是“公共”,所以我把我的区域设置为public,添加端口范围,然后重新加载:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp # firewall-cmd --reload
当你build立连接时会发生什么?
你的客户端连接到端口21上的vsftpd服务器。
服务器响应客户端告诉它在上面指定的范围内连接哪个端口。
客户端在指定的端口上build立数据连接,会话继续。
这里有不同的ftp 模式的一个很好的解释。
要启用被动模式,请在vsftp.conf中设置以下configuration选项:
pasv_enable=YES pasv_min_port=41361 pasv_max_port=65534 pasv_address=xxx.xxx.xxx.xxx
您当然可以更改开始和结束端口,并应该用服务器的公共IPreplacexxx。
另外,你应该在防火墙中打开被动模式端口范围。 在centos上,您可以加载ip_conntrack_ftp
模块来处理防火墙中的ftp连接。 编辑/etc/sysconfig/iptables-config
并将ip_conntrack_ftp添加到IPTABLES_MODULES选项。 之后重启iptables:
/sbin/service iptables restart
在pasv_enable=YES
旁边,指定VSFTP将运行PASV模式的端口范围:
pasv_min_port=50000 pasv_max_port=50999 port_enable=YES
不要忘了configurationiptables允许在这些端口上传输数据包:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
通常,它不是ftp服务器vsftpd,但防火墙如iptable防止使用被动模式(阻止数据传输所需的tcp连接)。