Найти в Дзене
Майкл Скофилд

ставим FTP за 5 минут на Debian (Ubuntu, Mint, etc)

Несмотря на то, что протокол FTP в современном мире успешно заменяется другими, отказываться полностью некоторые люди от него не хотят. Меня иногда просят его настроить веб разработчики. И также регулярно вижу его на серверах, где 1Сники что-то делают. Не знаю, как конкретно они его используют, но для 1С он по-прежнему иногда нужен.
Из линуксовых ftp серверов я всегда отдавал предпочтение vsftpd. Не знаю, чем они все отличаются друг от друга, но этот всегда успешно решал все мои задачи, поэтому пробовать что-то другое не было особого смысла.
Я покажу как быстро установить и настроить vsftpd на Debian, сразу прикрутив к нему TLS. Без шифрования сейчас как-то не принято настраивать передачу, хотя зачастую оно не нужно. Особенно если передача ведётся в рамках виртуальных машин одного гипервизора. Если TLS не нужен будет, просто закомментируете соответствующие настройки. И сразу дам подсказку, пока не забыл. Если какие-то FTP клиенты не захотят подключаться по TLS, выдавая неинформати

Несмотря на то, что протокол FTP в современном мире успешно заменяется другими, отказываться полностью некоторые люди от него не хотят. Меня иногда просят его настроить веб разработчики. И также регулярно вижу его на серверах, где 1Сники что-то делают. Не знаю, как конкретно они его используют, но для 1С он по-прежнему иногда нужен.

Из линуксовых ftp серверов я всегда отдавал предпочтение vsftpd. Не знаю, чем они все отличаются друг от друга, но этот всегда успешно решал все мои задачи, поэтому пробовать что-то другое не было особого смысла.

Я покажу как быстро установить и настроить vsftpd на Debian, сразу прикрутив к нему TLS. Без шифрования сейчас как-то не принято настраивать передачу, хотя зачастую оно не нужно. Особенно если передача ведётся в рамках виртуальных машин одного гипервизора. Если TLS не нужен будет, просто закомментируете соответствующие настройки. И сразу дам подсказку, пока не забыл. Если какие-то FTP клиенты не захотят подключаться по TLS, выдавая неинформативные ошибки, проверяйте версию TLS, которую они используют. Современные системы могут не позволить без дополнительных настроек подключиться с помощью протокола ниже TLS1.2, а какие-то старые клиенты могут его не использовать.

Устанавливаем vsftd на Debian 12:

# apt install vsftpd

Рисуем ему конфиг /etc/vsftpd.conf:

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
ascii_upload_enable=YES
ascii_download_enable=YES
rsa_cert_file=/etc/ssl/localhost.pem
rsa_private_key_file=/etc/ssl/localhost.pem
ssl_enable=YES

Создаём системного пользователя, который будет подключаться по ftp:

# useradd -s /usr/sbin/nologin -m ftp-user
# passwd ftp-user

Сразу скажу важный нюанс. По умолчанию vsftpd не пускает пользователя без shell. Я не знаю, зачем так сделано. Отключить проверку shell можно в файле /etc/pam.d/vsftpd, закомментировав строку:
#auth required pam_shells.so
Если будете подключаться пользователями с оболочкой, то делать этого не обязательно.

Создаем файл со списком пользователей ftp, которым разрешен доступ к серверу:

# touch /etc/vsftpd.user_list
# echo 'ftp-user' >> /etc/vsftpd.user_list

Создаём сертификат:

# openssl req -new -x509 -keyout /etc/ssl/localhost.pem -out /etc/ssl/localhost.pem -days 3650 -nodes

Перезапускаем vsftpd с новым конфигом:

# systemctl restart vsftpd

Всё, можно подключаться и проверять работу. Пользователь подключится в свой домашний каталог по ftp. На картинке ниже настройки клиента.