我正在Azure上的Ubuntu 16.04机器上安装一个安全的FTP服务器。 这是通过TLS的FTP,禁止匿名访问。
尝试使用服务器使用Filezilla工作正常 – 身份validation,传输,目录列表 – 一切…除了我从Filezilla下面的警告:
服务器发送具有不可路由地址的被动回复。 改用服务器地址。
当然,这是有道理的 – 虚拟机有一个私有IP地址,并在被动模式下,它发送私人IP地址给客户端。 解决scheme – 将以下内容添加到vsftp.conf(这是一个示例,而不是实际的configuration):
pasv_enable=YES port_enable=YES #The VM allows connections to ports 12345 & 12346 - remember, this is an example pasv_min_port=12345 pasv_max_port=12346 #The VM's domain name pasv_address=myftpservervm.cloudapp.net #Make vsftp resolve myftpservervm.cloudapp.net and send that IP address to clients pasv_addr_resolve=YES
然后我重新启动vsftp,…没有任何反应。 我仍然得到这些:
服务器发送具有不可路由地址的被动回复。 改用服务器地址。
我甚至尝试将pasv_address设置为服务器的确切(外部)IP地址(有和没有pasv_addr_resolve=YES ),结果是一样的。
我错过了什么吗?
我在Ubuntu 16.04 x64上使用vsftpd 3.0.3(来自Ubuntu的repo)和Filezilla 3.24.0
编辑:
进入被动模式时,显然vsftp发送一个0.0.0.0的IP地址。 这个问题似乎相关。
我在我的实验室testing,起初我遇到了和你一样的问题。 我检查了以下步骤:
1. netstat -ant我得到以下结果
tcp6 0 0 172.17.1.4:21 167.220.255.56:10979 TIME_WAIT
根据我的经验,ftp应该在tcp上监听,而不是在Azure虚拟机上tcp6
2.我尝试更改configuration文件/etc/vsftpd.conf 。
listen=yes listen_ipv6=no
然后我重新启动ftp服务,并使用netstat -ant检查
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
注意:您应该打开Azure NSG上的端口20,21,12345-12346(入站规则)
你只需要稍作修改。 编辑/etc/vsftpd.conf或任何configuration文件可能是,做这个改变:
passv_address=public_ip_of_aws_instance_not_hostname_or_private_ip
保存文件,重新启动vsftpd服务并再次检查!
确保软pipe被动端口位于安全组的tcp允许列表中(您可以从AWS EC2仪表板中configuration这些端口)。