Это будет очень краткая публикация о том, как выполняется настройка SFTP сервера на Linux. В качестве дистрибутива я буду использовать Ubuntu 20.04 LTS.
Настройка SFTP сервера
Сначала нужно установить SSH сервер. Я буду использовать openssh-server:
sudo apt install -y openssh-server
Теперь я настрою автоматический запуск сервера и запущу его:
sudo systemctl enable ssh
sudo systemctl start ssh
Теперь я подготовлю директорию, в которую пользователи SFTP будут складировать свои файлы:
sudo mkdir -p /data/store1
Создадим группу для пользователей sftp:
sudo addgroup sftp
Для того, чтобы chroot работал корректно назначим соответствующих владельцев и режим доступа:
sudo chown root:root /data/store1
sudo chmod 755 /data/store1
Также я создам директорию, куда все пользователи группы sftp смогут загружать файлы:
sudo mkdir /data/store1/upload
sudo chown root:sftp /data/store1/upload
sudo chmod 770 /data/store1/upload
Теперь я добавлю нового пользователя и укажу пароль для него:
sudo useradd -m user1 -g sftp
sudo passwd user1
Один из заключительных шагов – это редактирования конфигурационного файла ssh:
sudo nano /etc/ssh/sshd_config
В файл нужно добавить вот такую конфигурацию:
Match group sftp
ChrootDirectory /data/store1
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Этот кусок конфигурационного файла будет таргетировать всех пользователей группы sftp в директорию /data/store1 с использованием chroot, т.е. пользователи не смогут попасть в директории по иерархии выше. Им будет видна и доступна только директория /data/store1 и её поддиректории.
После завершения редактирования конфигурационного файла ssh необходимо перезапустить службу:
sudo systemctl restart ssh
Создание дополнительных пользователей
Если вам нужен еще один пользователь для работы с SFTP сервером, то выполните следующие действия:
1. Создайте нового пользователя:
sudo useradd -m user2 -g sftp
2. Укажите пароль для пользователя:
sudo passwd user2
Теперь вы можете проверить подключение под новым пользователем.
Проверка подключения
Вариантов проверки подключения много. Для операционной системы Windows я предпочитаю WinSCP:
В случае правильной настройки SFTP сервера вы должны увидеть содержимое корневой директории, но у вас не будет возможности выйти на уровень выше:
При работе в Linux окружении можно использовать встроенный файловый менеджер (для систем с GUI). Например, для Linux Mint это Nemo.
Здесь аналогично – в случае правильной настройки SFTP сервера вы должны увидеть содержимое корневой директории, но у вас не будет возможности выйти на уровень выше:
Настройка SFTP сервера и проверка подключения к нему завершены.