我知道这个问题已经被问遍了(1,2,3,4) 但我肯定是漏掉了什么,导致它无法正常工作。FTP 登录成功,但在目录列表中失败,这表明这是某种防火墙问题。该服务器是使用 Laravel Forge 创建的 EC2 实例 Ubuntu 16.04。
我已在正在使用的安全组上添加了被动端口范围,并且所有配置都根据答案进行设置,但我仍然收到目录列表错误。如果您能告诉我我可能做错了什么或需要做什么来修复它,我将不胜感激。
这是我的 vsftpd 配置:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=FORGE.IP.ADDRESS
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
vsftpd 服务器运行良好,运行状态显示如下:
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-11-05 10:31:56 UTC; 22h ago
Main PID: 32657 (vsftpd)
Tasks: 1 (limit: 1152)
CGroup: /system.slice/vsftpd.service
└─32657 /usr/sbin/vsftpd /etc/vsftpd.conf
以下是 EC2 实例的安全组:
我还打开了 UFW 防火墙的 20 和 21 端口。以下是 UFW 状态:
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
21/tcp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
我唯一没有做的事情就是将这些端口添加到 UFW 的“允许”列表中,如下所示DigitalOcean 教程建议。但其他答案中没有提到这一点。这是我遗漏的内容还是我遗漏了更明显的东西。
答案1
正如我所想和@Martin Prikryl 所建议的,我确实必须允许我在 UFW 中设置的安全组的端口范围。现在它终于列出了文件。