Я использую Ubuntu Server на компьютере с VirtualBox. Apache и SSH работают, но FTP после успешного подключения к серверу и входа в систему отправляет сообщение об ошибке:
- Command: PORT 127,0,0,1,180,221
- Response: 500 Illegal PORT command.
- Error: Failed to retrieve directory listing
Port Forwarding:
TCP | Host Port 2100 | Guest Port 21
Мой файл vstpd.conf:
listen=YES
pasv_enable=YES
pasv_min_port=2005
pasv_max_port=2010
port_enable=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
ftpd_banner=Welcome.
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Джекбенни близок ...
Я работаю на AWS с Ubuntu, вот что я сделал, чтобы vsftpd вел себя правильно:
seccomp_sandbox=NO
allow_writeable_chroot=YES
pasv_address=<(public ip) or (AWS public domain or DNS)>
pasv_enable=Yes
pasv_min_port=30000
pasv_max_port=30100
port_enable=YES
Затем вы должны убедиться, что вы пропускаете порты, 20,21,30000-30100
через. Имейте в виду, что выбор порта 30000-30100
совершенно произвольный и может быть любым. Хотя я бы придерживался портов выше 10000
и диапазона 100
или более.
Вы получили эту ошибку при подключении «извне»? В этом случае вам может потребоваться добавить внешний IP-адрес в vsftpd, чтобы он знал, какой IP-адрес отправлять своим клиентам при использовании пассивного режима FTP.
Попробуйте добавить pasv_address=<YOUR_IP_HERE>
в вашу конфигурацию.
Вы также можете попытаться переключить свой FTP-клиент в активный режим и посмотреть, по-прежнему ли возникает та же ошибка.
Вам также может потребоваться установить диапазон портов для пассивного FTP, а также включить пассивный режим FTP. Попробуйте добавить эти строки (замените START_PORT и END_PORT на нужные вам порты, а также не забудьте перенести их в ваш маршрутизатор):
pasv_enable=Yes
pasv_max_port=<START_PORT>
pasv_min_port=<END_PORT>
Я не знаю, что здесь происходит, но эта проблема слишком старая. Я, наконец, решил это несколько недель назад, когда переустановил свою виртуальную машину и тщательно следовал всем инструкциям. Ответы были так полезны в любом случае.