Я установил FTP-сервер на AWS EC2 (Ubuntu16.04) с пассивным режимом (PASV
), но он не работает. Однако он работает с EPSV
, не знаю почему. Я искал вокруг, но не нахожу ответов, любой орган может мне помочь в этом?vsftpd возвращает 0,0,0,0 в ответ на PASV
1. Vsftpd конфигурации
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=13000
pasv_max_port=13100
port_enable=YES
pasv_address=[public ip address of AWS EC2 instance]
allow_writeable_chroot=YES
seccomp_sandbox=NO
2. AWS EC2 брандмауэр
3. Испытание через FireFTP
В режиме PASV
я не могу подключиться к FTP-серверу, журнал:
220 (vsFTPd 3.0.3)
USER sensor
331 Please specify the password.
PASS (password not shown)
230 Login successful.
CWD/
250 Directory successfully changed.
TYPE A
200 Switching to ASCII mode.
PASV
QUIT
Однако, он работает с EPSV
(с выбранным IPV6 флажок), журнал, как показано ниже:
220 (vsFTPd 3.0.3)
USER sensor
331 Please specify the password.
PASS (password not shown)
230 Login successful.
PWD
257 "/" is the current directory
TYPE A
200 Switching to ASCII mode.
EPSV
229 Entering Extended Passive Mode (|||13082|)
LIST
150 Here comes the directory listing.
226 Directory send OK.
4. Тестирование с помощью Python ftplib
from ftplib import FTP
contents = []
ftp = FTP(host=xxx, timeout=3000)
ftp.login(user=xxx, passwd=xxx)
ftp.set_debuglevel(2)
ftp.retrlines("NLST", contents.append)
ftp.quit()
Бревно, как показано ниже:
*cmd* 'TYPE A'
*put* 'TYPE A\r\n'
*get* '200 Switching to ASCII mode.\n'
*resp* '200 Switching to ASCII mode.'
*cmd* 'PASV'
*put* 'PASV\r\n'
*get* '227 Entering Passive Mode (0,0,0,0,50,245).\n'
*resp* '227 Entering Passive Mode (0,0,0,0,50,245).'
ConnectionRefusedError: [Errno 111] Connection refused
Действительно ли он возвращает '0,0,0,0' в ответ' PASV'? –
Спасибо, Мартин! Как показано в журнале ftplib, он возвращает (0, 0, 0, 0, ..), в то время как применяется режим PASV. – codefluxer
Тогда, я думаю, вы указали адрес IPv6 в 'pasv_address'. Он должен быть адресом IPv4 для работы «PASV». 'PASV' не поддерживает IPv6. –