FTP – это протокол, который позволяет передавать файлы по сети от одного узла другому. Данный протокол является самым старым протоколом прикладного уровня, который появился намного раньше, чем HTTP или TCP/IP. С помощью протокола FTP могут быть организованы соединения с удаленными серверами для просмотра и передачи необходимых данных. При подключении к серверам и рабочим станциям при помощи протокола FTP необходимо использовать специальные приложения, которые именуются FTP-клиентами. Далее о том, как настроить работу с протоколом FTP на сервере, работающем под управлением Ubuntu 20.04 LTS.
Для того чтобы развернуть свой FTP-сервер на Ubuntu 20.04 LTS, необходимо:
- установить FTP-сервер с поддержкой SSL для безопасного подключения;
- настроить учетную запись FTP-пользователя;
- проверить подключение к FTP-серверу.
Установка FTP-сервера
Как всегда при работе с Ubuntu необходимо произвести первоначальную настройку сервера в соответствии с посвящённой данной процедуре статье. Далее следует обновить списки пакетов:
$ sudo apt update
После чего необходимо установить программу vsftpd
:
$ sudo apt install vsftpd
По окончании установки можно убедиться, что сервис vsftpd
уже успешно работает:
$ systemctl status vsftpd
Далее необходимо произвести некоторые настройки в конфигурационном файле. Для этого откройте при помощи текстового редактора файл vsftpd.conf
:
$ sudo nano /etc/vsftpd.conf
Вот те основные изменения, которые необходимо внести для корректной работы FTP-сервера:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
allow_writeable_chroot=YES
После внесения изменений в файл настроек необходимо сохранить их и перезапустить службу vsftpd
:
$ sudo systemctl restart vsftpd
Защита передачи данных при помощи SSL/TLS
Для защиты передачи ваших данных между FTP-клиентом и FTP-сервером в данной инструкции мы будем использовать генерацию самозаверяющего SSL-сертификата. Закрытый ключ и сертификат будут сохранены в одном файле, для чего следует применить команду:
$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
После установки SSL-сертификата необходимо внести изменения в конфигурационный файл:
$ sudo nano /etc/vsftpd.conf
А именно, внесите изменения в следующие строки данного файла:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
Настройка учётной записи FTP-пользователя
Для авторизации на FTP-сервере необходимо создать учетную запись пользователя. Изначально, подключаться к серверу можно и под локальным пользователем. Но более целесообразно для этих целей использовать специальную учётную запись. Для её создания используйте следующую команду:
$ sudo useradd ftpuser
Таким образом, у нас теперь есть пользователь ftpuser
. Следующей командой нужно создать для него домашний каталог:
$ sudo mkhomedir_helper ftpuser
После этого для него необходимо создать пароль на вход:
$ sudo passwd ftpuser
Настройка брандмауэра
Если вы производили работы по первоначальной настройке виртуального сервера, то на нём должен быть запущен межсетевой экран UFW. Соответственно, для того, чтобы брандмауэр вашего VPS позволял осуществлять подключения, необходимо внести небольшие изменения в настройки UFW. Проще говоря, нужно будет добавить в брандмауэр исключения для TCP-портов 20 и 21. Делается это следующими командами:
$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
После чего брандмауэр следует перезапустить:
$ sudo ufw disable
$ sudo ufw enable
И убедиться, что служба работает без ошибок:
$ sudo ufw status
Проверка подключения к FTP-серверу
Корректность произведённых настроек можно проверить через осуществление подключения к FTP-серверу. Для этой цели можно воспользоваться бесплатным FTP-клиентом FileZilla. После запуска приложения в FileZilla следует заполнить поля Хост
и Имя пользователя
. После нажатия кнопки Быстрое соединение система попросит ввести пароль учётной записи, под именем которой происходит подключение к FTP-серверу.
Подключение к серверу осуществлено успешно, значит произведенные настройки в конфигурационном файле корректны. В статусе подключения видно, что в данной сессии TLS соединение установлено
, значит передача данных между клиентом и сервером шифруются.
Неверный ключ в на скрине (в vsftpd.conf)
2021-08-19 at 06:33secure_chroot_dir (пропущена буква s)
Благодарим Вас за внимательность! Исправили ошибку.
2021-08-19 at 18:17sudo apt update && apt install vsftpd нужно sudo apt update && sudo apt install vsftpd
После внесенных настроек- в конфигурационном файле, сохраняем изменения и перезапускаем сервер:
$ sudo systemctl status vsftpd
2021-12-03 at 15:16наверное sudo systemctl restart vsftpd ?
Благодарим за замечание! Поправили статью.
2021-12-06 at 14:10Не работает. 20 минут потерял просто так. Пишет логин инкорек и не по руту, не по ftpuser не заходит
2022-02-16 at 01:561. Думаю стоит уточнить, что если какой-то настройки нет в /etc/vsftpd.conf, ее необходимо дописать самостоятельно.
2. Добавим в файл разрешенных оболочек следующую строку:
/bin/false
– Стоит явно указать, что файл разрешенных оболочек – это /etc/shells
3. Перед настройкой учетной записи FTP-пользователя нужно еще раз перезапустить сервер, чтобы внесенные в /etc/vsftpd.conf изменения вступили в силу:
2022-03-27 at 20:29$ sudo systemctl restart vsftpd
Благодарим Вас за уточнение!
2022-04-04 at 12:49vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd/pem
2022-04-10 at 21:59rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
“Таким образом, этой командой мы создали пользователя ftpuser. Его домашняя директория – /home/ftpuser/ и для него запрещен локальный доступ в систему. Добавим в файл разрешенных оболочек следующую строку:
2022-04-10 at 22:07/bin/false”
необходимо сделать открыть
$ sudo nano /etc/shells
и добавить строку
/bin/false
Возникает ошибка
2023-08-06 at 12:43227 Entering Passive Mode (194,59,40,99,158,38).
Команда: LIST
Ошибка: Соединение прервано после 20 секунд неактивности
Ошибка: Не удалось получить список каталогов
Команда: LIST
Ошибка: Соединение прервано после 20 секунд неактивности
Ошибка: Не удалось получить список каталогов
Тоже эта проблема! Помогите пож.
2024-05-19 at 21:35Проверьте, что вы не забыли установить опцию connect_from_port_20=YES. Так же полезно проверить настройки фаервола.
2024-07-02 at 15:45У кого пишет Login incorrect, пропишите в vsftpd.conf:
2024-08-03 at 15:05pam_service_name=ftp