SFTP расшифровывается как SSH File Transfer Protocol. Если вы догадались, это хорошо. Это версия FTP, которая использует SSH сверху. Это позволяет пользователям загружать и скачивать файлы на сервер Linux и с него через зашифрованное соединение. FTP делает то же самое без шифрования, и именно поэтому SFTP сейчас предпочитают FTP.
Давайте посмотрим, как вы можете настроить SFTP-сервер в системе Linux.
Настройка SFTP-сервера в Linux
Мы использовали Ubuntu в этой статье. Команды установки специфичны для Ubuntu и Debian, но остальные шаги можно выполнить в любом другом дистрибутиве Linux.
Для выполнения шагов вам необходимы права sudoer. Поэтому, если вы не обладаете правами sudo, обратитесь к системному администратору. Если вы один из них, пожалуйста, прочитайте о создании пользователя sudo в Ubuntu.
Настройка SFTP очень проста. Прежде чем перейти к этому, вам необходимо установить OpenSSH на стороне сервера и пакет SSH на стороне клиента.
Чтобы установить OpenSSH на сервере, вы можете использовать следующую команду:
sudo apt install openssh-server
Вам также нужен SSH в системе, откуда вы собираетесь получить доступ к SFTP-серверу.
sudo apt install ssh
После того, как это будет сделано, у вас будет все готово для настройки SFTP. Это сделано в три этапа, и мы собираемся показать вам их один за другим.
Шаг 1: Создание групп, пользователей, каталогов
Для безопасного использования SFTP (или любой другой службы в целом) лучше всего создавать группы и пользователей, которые будут использовать эту службу и только эту службу. «Лучше всего дать одно конкретное право одной конкретной организации».
В случае, если вы хотите предоставить доступ SFTP, а также нормальный доступ к системе, создайте пользователей таким образом, чтобы их было легко идентифицировать в соответствии с услугой. Например, если andreyex используется для нормального доступа к системе, тогда andreyexsftp может использоваться для доступа SFTP. Используя этот метод будет легче на стороне администрации.
Давайте создадим группу с именем «sftpg» следующим образом:
sudo groupadd sftpg
Давайте создадим пользователя с именем andreyexftp, добавим его в указанную выше группу и дадим ему пароль.
sudo useradd -g sftpg andreyexsftp sudo passwd andreyexsftp
В приведенной выше команде опция -g указывает группу, в которую следует добавить пользователя. Вы можете перечислить всех пользователей в Linux и убедиться, что новый пользователь добавлен.
Предположим, вы хотите использовать каталог /data/в качестве корня для sftp и /data/USERNAME для каждого пользователя. Поэтому, когда пользователи входят в систему через sftp, они должны находиться в /data/USERNAME в качестве каталога по умолчанию (точно так же, как вы находитесь в каталоге /home/USERNAME,когда вы входите в систему Linux через SSH). Кроме того, примите ограничение, что они могут читать файлы из этого каталога, но могут загружать только в каталог загрузки.
Давайте создадим каталоги и изменим их доступ и владельца следующим образом (читайте о правах доступа к файлам в Linux, чтобы узнать больше об этом).
sudo mkdir -p /data/andreyexsftp/upload sudo chown -R root.sftpg /data/andreyexsftp sudo chown -R andreyexsftp.sftpg /data/andreyexsftp/upload
Единственное, что может сбить с толку, – это передать права на каталог пользователя самому root. Это является обязательным для корреляции в SFTP. Поэтому убедитесь, что владелец /data/USERNAME является пользователем root.
На данный момент у нас есть пользователь с именем andreyexsftp с группой sftpg и с правами доступа, установленными для /data/andreyexsftp.
Шаг 2. Настройте sshd_config
Далее это вам нужно настроить SSH сервер таким образом, что всякий раз, когда пользователь, принадлежащий к группе sftpg входит в систему, он/она попадает в SFTP вместо обычной оболочки вы получите через SSH . Добавьте следующий фрагмент в /etc/ssh/sshd_config, если его еще нет.
Match Group sftpg ChrootDirectory /data/%u ForceCommand internal-sftp
В приведенном выше фрагменте ChrootDirectory позволяет сделать указанный каталог корневым узлом («/» каталог) в дереве каталогов. Зарегистрированный пользователь не может видеть ничего выше этого каталога. Так что это остановит текущего пользователя от доступа к файлам других пользователей через sftp . % u – код перехода для заполнения его текущим именем пользователя на момент входа в систему. Когда andreyexsftp регистрируется через sftp, он будет в /data/andreyexsftp в качестве своего корневого каталога.
Шаг 3: Перезапустите сервис
Чтобы внести изменения, внесенные в sshd_config, перезапустите службу следующим образом.
sudo systemctl restart sshd
Доступ к SFTP через командную строку Linux
Вы можете войти в SFTP, как вы это обычно делаете с SSH.
sftp andreyexsftp@andreyex.ru
Примеры команд SFTP
Команды SFTP обычно имеют следующий формат.
COMMAND [SOURCE] [DESTINATION]
Для любой команды аргументами могут быть пути локальной системы или пути удаленной системы. Там нет конкретного видимого различия между ними. Вы можете указать путь как обычно после рассмотрения того, является ли аргумент локальным или удаленным.
GET – загрузить содержимое с удаленного сервера в локальную систему. Команда ниже загружает удаленный файл poster.img в каталог ~/Pictures локальной системы.
GET poster.img ~/Pictures
PUT – загрузка содержимого из локальной системы в удаленную систему. Ниже команда загружает ~ /Pictures/poster2.jpg в нашу папку загрузок.
PUT ~/Pictures/poster2.jpg uploads/
RM – Для удаления файлов в удаленной системе. Это очень похоже на команду rm. Вы можете видеть ниже, которая удаляет изображение в uploads/poster3.jpg
RM uploads/poster3.jpg
Вышеуказанные команды очень просты и достаточны для изучения FTP /SFTP-сервера. Если вы хотите узнать больше, используйте команду help.
Мы надеемся, что эта статья помогла вам в настройке SFTP-сервера в Linux.
Расскажите нам в комментариях о настройке вашей файловой системы SFTP. Это как упомянуто в этой статье или объединенный каталог или что-нибудь еще?
Если вы нашли эту статью полезной, поделитесь ею с друзьями. Если у вас есть предложения, не стесняйтесь оставить их ниже.