每当我安装vsftpd
时centos
,我只为用户设置监狱环境,其余的是vsftpd
. 我创建用户并尝试连接filezila
ftp 客户端,但我无法连接到被动模式。我总是将模式更改transfer settings
为活动模式以成功连接到ftp server
否则我得到
Error: Failed to retrieve directory listing
那么有没有办法改变vsftp.conf
文件中的任何指令,我们可以用被动模式连接到服务器?
每当我安装vsftpd
时centos
,我只为用户设置监狱环境,其余的是vsftpd
. 我创建用户并尝试连接filezila
ftp 客户端,但我无法连接到被动模式。我总是将模式更改transfer settings
为活动模式以成功连接到ftp server
否则我得到
Error: Failed to retrieve directory listing
那么有没有办法改变vsftp.conf
文件中的任何指令,我们可以用被动模式连接到服务器?
要为 vsftpd 配置被动模式,您需要在 vsftpd.conf 中设置一些参数。
这将启用被动模式并将其限制为使用十一个端口进行数据连接。这很有用,因为您需要在防火墙上打开这些端口。
如果在测试后一切正常,那么保存你的防火墙状态
这将更新
/etc/sysconfig/iptables
文件。要在 CentOS 7 上做到这一点,您必须使用新的 firewalld,而不是 iptables:
找到你的区域:
我的区域是“公共”区域,所以我将区域设置为公共区域,添加端口范围,然后重新加载:
建立连接时会发生什么
您的客户端在端口 21 上连接到 vsftpd 服务器。
服务器响应客户端,告诉它从上面指定的范围连接到哪个端口。
客户端在指定端口上建立数据连接,会话继续。
这里对不同的 ftp模式有很好的解释。
要启用被动模式,请在 vsftp.conf 中设置以下配置选项:
您当然可以更改开始和结束端口,并且应将 xxx 替换为您服务器的公共 IP。
此外,您应该在防火墙中打开被动模式端口范围。在 centos 上,您可以加载
ip_conntrack_ftp
模块来处理防火墙中的 ftp 连接。编辑/etc/sysconfig/iptables-config
ip_conntrack_ftp 并将其添加到 IPTABLES_MODULES 选项。然后重启 iptables:在旁边
pasv_enable=YES
,指定 VSFTP 将运行 PASV 模式的端口范围:不要忘记配置 iptables 允许这些端口上的数据包传输:
通常,阻止使用被动模式的不是 ftp 服务器、vsftpd,而是像 iptable 这样的防火墙(阻止数据传输所需的 tcp 连接)。
我必须执行以下步骤才能在 CentOS 8 上使用 vsftp 被动模式:
在 vsftpd 配置中启用被动模式
/etc/vsftpd/vsftpd.config
:在 firewalld 中启用 ftp 服务:
正如在另一篇文章中提到的,您必须加载内核模块“nf_conntrack_ftp”(在 CentOS 8 中已经如此)并在内核设置中启用“nf_conntrack_helper”:
将此行添加到
/etc/sysctl.conf
(或存在/etc/sysctl.d/10-nf_conntrack_helper.conf
时/etc/sysctl.d/
)以进行重启持久设置:启用连接跟踪后,无需在本地防火墙中额外配置被动端口。