FTP-сервер на сервере: частые ошибки и решения
FTP настраивается быстро, но именно на нём новички теряют больше всего времени: соединение вроде есть, а список файлов не грузится, вход не проходит или передача обрывается на середине. Разберём частые ошибки FTP-сервера на сервере — по симптому, причине и точному решению с командами. Почти все они сводятся к пассивному режиму, правам на каталоги и настройке TLS.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Клиент подключается, но список файлов не загружается
Это ошибка номер один. В логе клиента вы видите успешный вход, затем команду LIST — и зависание с последующим тайм-аутом. Причина всегда одна: не работает пассивный режим передачи данных. FTP использует два соединения, и для канала данных сервер открывает порт из пассивного диапазона. Если диапазон не задан в конфиге или закрыт фаерволом, командный канал работает, а данные — нет.
Проверьте, что в /etc/vsftpd.conf заданы пассивные порты и внешний адрес, затем убедитесь, что диапазон открыт в фаерволе.
grep pasv /etc/vsftpd.conf
ufw status | grep 40000
Если пассивные директивы отсутствуют, добавьте их: включите пассивный режим, задайте узкий диапазон и внешний IP. После этого откройте диапазон в UFW и перезапустите демон. Отдельный коварный случай — FTPS за фаерволом: при шифровании фаервол не может подсмотреть в командный канал номер пассивного порта и открыть его на лету, поэтому диапазон обязательно должен быть фиксированным и заранее разрешённым. Без явного диапазона FTPS будет вечно висеть на листинге.
Ошибка 530 Login incorrect
Симптом понятен: правильные логин и пароль, а сервер отвечает 530 и не пускает. Причин несколько, и они не всегда очевидны. Первая — пользователь есть в системе, но его оболочка не входит в список разрешённых в /etc/shells. Vsftpd по умолчанию проверяет оболочку через PAM, и если у аккаунта стоит /usr/sbin/nologin, вход по FTP блокируется. Решается это либо добавлением оболочки в разрешённые, либо настройкой PAM.
Вторая причина — включён список разрешённых пользователей, а ваш аккаунт в него не попал. Проверьте userlist_enable и содержимое файла списка.
grep userlist /etc/vsftpd.conf
cat /etc/vsftpd.user_list
Тут кроется ловушка: параметр userlist_deny меняет логику на противоположную. Когда он в YES, файл работает как чёрный список, когда в NO — как белый. Люди часто путают эти режимы и сами себе закрывают вход. Третья причина — банальная блокировка от SELinux или AppArmor, которые могут запрещать демону читать домашние каталоги. Загляните в системный лог, если первые две гипотезы не подтвердились.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS500 OOPS: refusing to run with writable root
Эта ошибка появляется при старте или при входе пользователя с включённым chroot. Vsftpd намеренно отказывается запирать пользователя в каталог, в который тот может писать, потому что это дыра в безопасности. Быстрое, но грубое решение — разрешить запись в корень заглушки.
allow_writeable_chroot=YES
Правильное решение аккуратнее и безопаснее: сделайте сам каталог-тюрьму недоступным на запись, а обмен файлами ведите через вложенный подкаталог, куда у пользователя полные права. Такая раскладка снимает ошибку без ослабления защиты.
chown nobody:nogroup /home/ftpuser/ftp
chmod a-w /home/ftpuser/ftp
mkdir -p /home/ftpuser/ftp/files
chown ftpuser:ftpuser /home/ftpuser/ftp/files
После этого пользователь запирается в каталог ftp, но пишет в files — и vsftpd больше не ругается. Это предпочтительный вариант для рабочего сервера.
Передача файлов обрывается на середине
Файл начинает заливаться, доходит до какого-то процента и рвётся. Если это происходит на определённом размере — почти наверняка виноват тайм-аут или переполнение диска. Проверьте свободное место первым делом, потому что забитый диск даёт самые загадочные симптомы.
df -h
tail -n 30 /var/log/vsftpd.log
Если места достаточно, увеличьте тайм-ауты простоя и передачи данных в конфиге — на медленном канале дефолтные значения слишком короткие для крупных файлов. Ещё одна причина обрывов — нестабильный пассивный диапазон: если часть портов диапазона закрыта, часть соединений будет срываться случайным образом, создавая ощущение плавающей проблемы. Убедитесь, что весь диапазон открыт целиком, а не частично.
Отдельно про ресурсы: если сервер захлёбывается при нескольких параллельных передачах, дело может быть в слабом VPS. FTP сам по себе нетребователен, но узкий канал и малый объём RAM под дисковый кэш заметно замедляют работу. Если упираетесь в это регулярно, разумнее перейти на VPS помощнее с широким каналом — у MAATRIX можно подобрать сервер в нужной локации и оплатить из России картой, СБП или криптой, не жертвуя скоростью отдачи файлов.
TLS-соединение не устанавливается
После включения FTPS клиент выдаёт ошибку сертификата или разрывает соединение сразу после приветствия. Частая причина — самоподписанный сертификат, которому клиент не доверяет. FileZilla обычно предлагает принять его вручную, но автоматизированные клиенты и скрипты просто рвут связь. Правильное решение — использовать валидный сертификат Let's Encrypt вместо самоподписи.
Вторая причина — рассинхрон требований. Если на сервере включён force_local_logins_ssl=YES, а клиент пытается зайти обычным нешифрованным FTP, сервер справедливо его отвергает. Убедитесь, что в клиенте выбран именно явный FTP через TLS, а не простой FTP. Проверить, что демон слушает и отвечает по TLS, можно напрямую.
openssl s_client -connect ВАШ_IP:21 -starttls ftp
Если команда показывает цепочку сертификата и рукопожатие проходит — сервер настроен верно, и проблема на стороне клиента. Если рукопожатие падает, перепроверьте пути к файлам сертификата и ключа в конфиге: типичная ошибка — указать несуществующий или недоступный демону файл.
FTP-сервис не поднимается после перезагрузки
Вы всё настроили, но после ребута FTP недоступен. Первым делом проверьте, включён ли автозапуск демона и что показывает журнал.
systemctl is-enabled vsftpd
systemctl status vsftpd
journalctl -u vsftpd -n 30
Если демон не стартует, чаще всего в логе будет прямая причина: синтаксическая ошибка в конфиге после ручной правки, недоступный файл сертификата или занятый порт 21. Ошибку в конфиге легко внести опечаткой — vsftpd не прощает неизвестных директив и отказывается запускаться. Держите резервную копию рабочего конфига и сверяйтесь с ней. Если порт 21 занят другим процессом, найдите и остановите его. После устранения причины включите автозапуск, чтобы FTP-сервер стабильно поднимался при каждой загрузке сервера.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Почему через FTPS не грузится список файлов, а по обычному FTP всё работает?
При шифровании фаервол не видит номер пассивного порта в командном канале и не открывает его автоматически. Нужен фиксированный пассивный диапазон, заранее открытый в фаерволе.
Логин и пароль верные, но сервер отвечает 530 — в чём дело?
Чаще всего оболочка пользователя не в /etc/shells либо аккаунт не проходит по списку userlist. Проверьте userlist_deny — он инвертирует логику белого и чёрного списка.
Как убрать ошибку refusing to run with writable root правильно?
Сделайте корневой каталог пользователя недоступным на запись, а файлы принимайте в подкаталоге с полными правами. Это безопаснее, чем просто разрешать запись в корень заглушки.
Передача больших файлов обрывается — куда смотреть?
Проверьте свободное место на диске, увеличьте тайм-ауты в конфиге и убедитесь, что весь пассивный диапазон портов открыт целиком, а не частично.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.