НАСТРОЙКА FTP-СЕРВЕРА

 

Для начала, установим соответствующий пакет.

sudo apt install vsftpd -y

Затем отредактируем конфигурационный файл.

sudo nano /etc/vsftpd.conf

Здесь конфиг пассивного режима без шифрования с диапазоном портов от 31000 до 32000, их следует пробросить через NAT, равно как и 20-й. Запись разрешена, чрута нет, ip6 нет, подключение через 20 порт так же разрешено, шифрование отлючено, кодировка UTF8, гостевой доступ запрещен, папка по умолчанию "local_root=/data/webserver":

listen=YES
listen_ipv6=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
guest_enable=NO
guest_username=www-data
local_root=/data/webserver
seccomp_sandbox=NO
pasv_enable=YES
pasv_min_port=31000
pasv_max_port=32000

Бывает еще активный режим, в таком случае следует изменить пару строк:

pasv_enable=NO

Затем удалить или, лучше, закомментировать

#pasv_min_port=31000
#pasv_max_port=32000

Для шифрованного режима следует сгенерировать ключи, а для их создания необходимо убедиться в наличии пакета ssl-cert.

sudo apt install ssl-cert -y

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

sudo make-ssl-cert generate-default-snakeoil --force-overwrite

Подчеркну, что приведенная выше команда именно переписывает их, а не создает новые. Будьте осторожны.

Пути по умолчанию будут такими:

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Ну и наконец, необходимо опять залезть в /etc/vsftpd.conf и задать параметр

ssl_enable=YES

Итоговый конфиг будет следующим:

listen=YES
listen_ipv6=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
guest_enable=NO
guest_username=www-data
local_root=/data/webserver
seccomp_sandbox=NO
pasv_enable=yes
pasv_min_port=31000
pasv_max_port=32000

Напоследок, перезагрузим службу.

sudo service vsftpd restart

По факту, от первого варианта отличается всего лишь тремя символами. На этом пока все.

... А, нет, не все. Отмечу, что sftp у меня заработал только с плагином для Total Commander для Android и, вроде бы, на машинах под Linux. Windows ни в какую не хочет работать в шифрованном режиме.