Найти тему
Merion Academy

Руководство по установке SFTP сервера на Linux

Оглавление

Привет, друг! Мы подготовили удобную инструкцию по установке и настройке SFTP-сервера Linux.

 Руководство по установке SFTP сервера на Linux
Руководство по установке SFTP сервера на Linux

Что такое SFTP?

SFTP - это безопасный протокол передачи файлов - «Secure SHell» File Transfer Protocol. То есть это версия FTP, которая для безопасности поверх использует SSH. FTP делает то же самое, но без шифрования, поэтому использовать SFTP предпочтительнее.

Установка SFTP-сервера на Linux

Чтобы выполнить эти шаги, вам нужно иметь права sudo. SFTP прост в установке, но сначала необходимо установить OpenSSH со стороны сервера и SSH-пакет со стороны клиента.

Чтобы установить OpenSSH на сервер, используйте следующую команду:

sudo apt install openssh-server [Ubuntu/Debian]
sudo yum –y install openssh-server openssh-clients [CentOS/RHEL]

Вам также понадобится SSH на компьютере, с которого вы хотите получать доступ к серверу SFTP.

sudo apt install ssh [Ubuntu/Debian]

Теперь все готово для настройки SFTP.

Этап 1: Создание групп, пользователей, каталогов

Для безопасного использования SFTP, лучше всего создать группы и пользователей, которые будут использовать только эту службу.

Создадим группу с названием sftpg, при помощи комыды groupadd:

sudo groupadd sftpg

Далее создадим пользователя seenisftp, и добавим его в группу.

sudo useradd -g sftpg seenisftp
sudo passwd seenisftp

В команде useradd параметр -g указывает группе, какого пользователя нужно добавить.

Предположим, что вы хотите использовать каталог /data/ в качестве корневого для sftp, а /data/USERNAME - для каждого пользователя. Поэтому, когда пользователи входят через sftp, они должны будут оказаться в каталоге /data/USERNAME. Также создадим ограничение при котором пользователи смогут читать файлы из этого каталога, но загружать их смогут только в каталог uploads.

Cоздадим каталоги и изменим их доступ:

sudo mkdir -p /data/seenisftp/upload
sudo chown -R root.sftpg /data/seenisftp
sudo chown -R seenisftp.sftpg /data/seenisftp/upload

Важно: убедитесь, что владелец /data/USERNAME и есть root, это обязательно для изменения корневого каталога в SFTP

Этап 2: Настройка sshd_config

Далее нужно настроить сервер так, чтобы когда пользователь, из группы sftpg, входил в систему, он попадал в sftp вместо обычной оболочки, в которую попадает через ssh. Добавьте следующий фрагмент кода в файл /etc/ssh/sshd_config:

Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp

ChrootDirectory позволяет создать необходимый каталог в качестве корневого узла (/ каталог) в дереве каталогов. Вошедший в систему пользователь не сможет увидеть ничего выше этого каталога и это не даст ему получить доступ к файлам других пользователей. %u - это escape код для заполнения его текущим именем пользователяm, во время входа в систему.

Этап 3: Перезагрузите службу

Чтобы выполнить внесенные в sshd_config изменения, перезапустите службу:

sudo systemctl restart sshd

Доступ к SFTP через командную строку Linux

Заходите в SFTP также как в SSH:

sftp seenisftp@merionet.ru

Примеры команд SFTP

Синтаксис команд SFTP:

COMMAND [SOURCE] [DESTINATION]

Параметрами могут быть либо локальные, либо удаленные системные пути.

  • GET - загрузка содержимого с удаленного сервера в локальную систему. GET poster.img ~/Pictures
  • PUT - загрузка содержимого из локальной системы в удалённую. PUT ~/Pictures/picture2.jpg uploads/
  • RM – предназначен для удаления файлов в удалённой системе. RM uploads/picture3.jpg