Общая картина такова: у меня есть SD-карта для моей камеры, которая загружает мои фотографии через WiFi на сервер по ftp. Я хочу, чтобы эти фотографии были загружены в небольшую коробку Ubuntu, которая у меня есть. Для безопасности я использую ftp поверх ssl (карта не поддерживает sftp). Коробка ubuntu находится за моим маршрутизатором, поэтому у меня есть внешний порт 223, направленный на порт 21 ubuntu.
Я последовал за эта страница настроить vsftpd на моем сервере, и это на 90% правильно. Я вижу (в vsftpd.log), как удаленный сервер входит в систему и создает папки и файлы, но все файлы, которые он создает, имеют нулевую длину, а в vsftp.log говорится
FAIL UPLOAD: Client "199.192.198.3", "/files/2015-06-22/DSC_0009.JPG", 0.00Kbyte/sec
Итак, я прочитал о ftp и попытался добавить пассивный режим в свою настройку, в том числе сопоставить соответствующие порты на моем маршрутизаторе. Нет любви.
Вот мой vsftp.conf:
listen=YES
anonymous_enable=NO
local_enable=YES
write_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
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
#
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
#
require_ssl_reuse=NO
ssl_ciphers=HIGH
#
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
и у моего маршрутизатора есть порты 10090: 10100, сопоставленные с ящиком ubuntu.
FTP - один из самых ужасных протоколов, с которым вам может не повезти. Большинство шлюзов реализуют ftp-прокси для перенаправления FTP-трафика на внутренний сервер из-за сложности протокола (он использует одно соединение для отправки и получения команд, а другое - для передачи информации). В любом случае попробуйте загрузить с машины в той же подсети сервера, и если это все еще не удается, проверьте разрешения.