НАСТРОЙКА 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 ни в какую не хочет работать в шифрованном режиме.