SFTP на Linux · 5 min read · Sep 24, 2025

Как установить и использовать SFTP на серверах Linux

SFTP или SSH File Transfer Protocol — это метод безопасной передачи данных между двумя и более компьютерами. Это FTP, который работает поверх протокола SSH и использует его безопасность, полностью поддерживая его аутентификацию.

Сегодня рекомендуется использовать SFTP вместо устаревшего протокола FTP или FTP/S. SFTP по умолчанию безопасен, потому что именно так работает SSH. С точки зрения безопасности SFTP также защищает вас от перехвата паролей и атак типа «человек посередине» (MiTM).

Как и SSH, SFTP защищает целостность данных с помощью шифрования и криптографической хэш-функции. Он также поддерживает несколько безопасных методов аутентификации, включая аутентификацию по паролю и по ключу. Кроме того, он уменьшает количество открытых портов сервера для внешней сети, так как работает на том же порту, что и протокол SSH.

Предварительные требования

В этом руководстве вы узнаете, как настроить SFTP-сервер на системе Linux. Также вы узнаете основные команды клиента sftp.

Ниже приведена текущая среда для реализации:

  • Сервер Linux — вы можете использовать Debian, Ubuntu, CentOS, Fedora, Rocky или любую другую дистрибуцию Linux.
  • Убедитесь, что пакеты OpenSSH доступны на вашей системе Linux.
  • Клиент SFTP — командная строка sftp или любой GUI-клиент по вашему выбору.

Проверьте пакеты OpenSSH

Чтобы настроить SFTP-сервер, пакеты OpenSSH должны быть установлены на вашей системе Linux. Почти все серверы дистрибутивов Linux имеют пакеты OpenSSH, установленные по умолчанию. Но если у вас нет пакета OpenSSH на вашей системе, вы можете установить его из официального репозитория.

  1. Чтобы убедиться, что пакеты OpenSSH установлены на вашей системе Linux, используйте следующую команду.

Для серверов Debian или Ubuntu вы можете использовать команду dpkg ниже.

dpkg -l | grep ssh

Ниже приведен вывод с нашей системы Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library  
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines  
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines  
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

Первый столбец ‘ ii ‘ означает, что пакет установлен. Пакет ‘ openssh-sftp-server ‘ установлен на системе Debian/Ubuntu.

Вы можете использовать команду rpm ниже для пользователей RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux.

rpm -qa | grep ssh

Создайте группу и пользователя

На этом этапе вы создадите новую группу и пользователя для SFTP-сервера. Пользователи в этой группе будут иметь доступ к SFTP-серверу. По соображениям безопасности пользователи SFTP не могут получить доступ к службе SSH; они могут получить доступ только к SFTP-серверу.

  1. Выполните следующую команду, чтобы создать новую группу ‘ sftpgroup ‘.
sudo groupadd sftpgroup
  1. Создайте нового пользователя ‘ sftpuser ‘ с помощью следующей команды.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Подробные параметры:

  • -G: автоматически добавляет пользователя в группу ‘ sftpgroup ‘.
  • -d: указывает домашний каталог для нового пользователя.
  • -s: устанавливает по умолчанию для нового пользователя ‘ /sbin/nologin ‘, что означает, что пользователь не может получить доступ к SSH-серверу.
  1. Далее создайте пароль для пользователя ‘ sftpuser ‘ с помощью команды ниже.
passwd sftpuser

Введите свой надежный пароль и повторите его, затем нажмите ‘ Enter ‘, чтобы подтвердить.

Добавить пользователя и группу sftpserver

Чтобы добавить больше пользователей, повторите этапы номер 2 и 3, и, что наиболее важно, все пользователи SFTP должны находиться в группе ‘ sftpgroup ‘ без доступа к оболочке через SSH.

Настройка каталога Chroot Jail

После создания новой группы и пользователя вам необходимо создать и настроить каталог chroot для пользователей SFTP.

  1. Для пользователя ‘sftpuser’ новый домашний каталог будет находиться по адресу ‘/srv/sftpuser’. Выполните команду ниже, чтобы создать его.
mkdir -p /srv/sftpuser
  1. Чтобы настроить chroot для пользователя ‘ sftpuser ‘, вам необходимо изменить владельца каталога на пользователя root, но оставить группу для чтения и выполнения без доступа на запись.

Измените владельца каталога на пользователя ‘root’ с помощью следующей команды.

sudo chown root /srv/sftpuser

Дайте группе разрешение на чтение и выполнение, но не на запись.

sudo chmod g+rx /srv/sftpuser
  1. Далее создайте новый каталог ‘data’ внутри каталога ‘ /srv/sftpuser ‘ и измените владельца этого каталога ‘ data ‘ на пользователя ‘ sftpuser ‘.
mkdir -p /srv/sftpuser/data  
chown sftpuser:sftpuser /srv/sftpuser/data

настройка каталога chroot jail для stpuser

На данный момент ниже приведены детали конфигурации для каталога пользователя SFTP.

  • Каталог ‘ /srv/sftpuser ‘ является домашним каталогом по умолчанию.
  • Пользователь ‘ sftpuserне может записывать в каталог ‘ /srv/sftpuser ‘, но может читать внутри этого каталога.
  • Пользователь ‘ sftpuser ‘ может загружать файлы на SFTP-сервер в каталог ‘ /srv/sftpuser/data ‘.

Включите SFTP на SSH-сервере

Чтобы включить SFTP-сервер на OpenSSH, вам необходимо отредактировать конфигурацию SSH ‘/etc/ssh/sshd_config’.

  1. Отредактируйте конфигурацию ssh ‘ /etc/ssh/sshd_config ‘ с помощью nano или vim.
sudo nano /etc/ssh/sshd_config
  1. Закомментируйте следующую конфигурацию, чтобы отключить отдельную функцию ‘ sftp-server ‘.
#Subsystem      sftp    /usr/lib/openssh/sftp-server
  1. Вставьте следующую конфигурацию в конец файла.
Subsystem sftp internal-sftp  
  
Match Group sftpgroup  
     ChrootDirectory %h  
     X11Forwarding no  
     AllowTCPForwarding no  
     ForceCommand internal-sftp

Сохраните конфигурацию и выйдите.

Подробная конфигурация:

  • Вместо использования подпроцесса ‘ sftp-server ‘ мы используем ‘ internal-sftp ‘.
  • SFTP-сервер включен для группы ‘ sftpgroup ‘.
  1. Чтобы применить новую конфигурацию, перезапустите службу ssh с помощью команды ниже.
sudo systemctl restart sshd

SFTP-сервер готов и доступен, он работает на том же порту, что и служба SSH.

Доступ к SFTP-серверу

На стороне клиента мы будем использовать командную строку sftp, которая установлена по умолчанию на большинстве дистрибутивов Linux. Но вы также можете использовать другой клиент командной строки или GUI FTP-клиент, такой как FileZilla, Cyberduck и т. д.

  1. Чтобы подключиться к SFTP-серверу, выполните команду sftp, как указано ниже.
sftp ftpuser@SERVER-IP

Если ваш SFTP и/или SSH-сервер работают на пользовательском порту, вы можете использовать команду sftp, как указано ниже.

sftp -P PORT ftpuser@SERVER-IP

Введите пароль для ‘ sftpuser ‘.

  1. После подключения к SFTP-серверу выполните следующую команду.

Показать текущий рабочий каталог и перечислить все доступные файлы и каталоги.

pwd  
ls

Подключение к sftpserver с помощью команды sftp

  1. Загрузите локальный файл на SFTP-сервер в каталог ‘/ ‘, что приведет к ошибке ‘ permission denied ‘, потому что это каталог chroot.
put /path/to/file/on/local /
  1. Загрузите локальный файл в каталог ‘ /data/ ‘ на SFTP-сервере. Если ваша конфигурация правильная, ваш файл будет загружен в каталог ‘ /data/ ‘.
put /path/to/file1/on/local1 /data/  
put /path/to/file2/on/local /data/

Проверка чтения и записи на sftpserver

  1. Теперь проверьте доступные файлы в каталоге ‘ /data ‘ с помощью следующей команды.
ls /data/

И вы увидите ваш файл, загруженный на SFTP-сервер.

Заключение

Поздравляем! Вы успешно настроили SFTP-сервер на системе Linux. Этот тип конфигурации можно применить на большинстве систем Linux с установленным OpenSSH. Также вы узнали, как настроить каталог chroot для пользователей SFTP и изучили основные команды клиента sftp.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.