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 на вашей системе, вы можете установить его из официального репозитория.
- Чтобы убедиться, что пакеты 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-серверу.
- Выполните следующую команду, чтобы создать новую группу ‘ sftpgroup ‘.
sudo groupadd sftpgroup- Создайте нового пользователя ‘ sftpuser ‘ с помощью следующей команды.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuserПодробные параметры:
- -G: автоматически добавляет пользователя в группу ‘ sftpgroup ‘.
- -d: указывает домашний каталог для нового пользователя.
- -s: устанавливает по умолчанию для нового пользователя ‘ /sbin/nologin ‘, что означает, что пользователь не может получить доступ к SSH-серверу.
- Далее создайте пароль для пользователя ‘ sftpuser ‘ с помощью команды ниже.
passwd sftpuserВведите свой надежный пароль и повторите его, затем нажмите ‘ Enter ‘, чтобы подтвердить.

Чтобы добавить больше пользователей, повторите этапы номер 2 и 3, и, что наиболее важно, все пользователи SFTP должны находиться в группе ‘ sftpgroup ‘ без доступа к оболочке через SSH.
Настройка каталога Chroot Jail
После создания новой группы и пользователя вам необходимо создать и настроить каталог chroot для пользователей SFTP.
- Для пользователя ‘sftpuser’ новый домашний каталог будет находиться по адресу ‘/srv/sftpuser’. Выполните команду ниже, чтобы создать его.
mkdir -p /srv/sftpuser- Чтобы настроить chroot для пользователя ‘ sftpuser ‘, вам необходимо изменить владельца каталога на пользователя root, но оставить группу для чтения и выполнения без доступа на запись.
Измените владельца каталога на пользователя ‘root’ с помощью следующей команды.
sudo chown root /srv/sftpuserДайте группе разрешение на чтение и выполнение, но не на запись.
sudo chmod g+rx /srv/sftpuser- Далее создайте новый каталог ‘data’ внутри каталога ‘ /srv/sftpuser ‘ и измените владельца этого каталога ‘ data ‘ на пользователя ‘ sftpuser ‘.
mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data
На данный момент ниже приведены детали конфигурации для каталога пользователя SFTP.
- Каталог ‘ /srv/sftpuser ‘ является домашним каталогом по умолчанию.
- Пользователь ‘ sftpuser ‘ не может записывать в каталог ‘ /srv/sftpuser ‘, но может читать внутри этого каталога.
- Пользователь ‘ sftpuser ‘ может загружать файлы на SFTP-сервер в каталог ‘ /srv/sftpuser/data ‘.
Включите SFTP на SSH-сервере
Чтобы включить SFTP-сервер на OpenSSH, вам необходимо отредактировать конфигурацию SSH ‘/etc/ssh/sshd_config’.
- Отредактируйте конфигурацию ssh ‘ /etc/ssh/sshd_config ‘ с помощью nano или vim.
sudo nano /etc/ssh/sshd_config- Закомментируйте следующую конфигурацию, чтобы отключить отдельную функцию ‘ sftp-server ‘.
#Subsystem sftp /usr/lib/openssh/sftp-server- Вставьте следующую конфигурацию в конец файла.
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftpСохраните конфигурацию и выйдите.
Подробная конфигурация:
- Вместо использования подпроцесса ‘ sftp-server ‘ мы используем ‘ internal-sftp ‘.
- SFTP-сервер включен для группы ‘ sftpgroup ‘.
- Чтобы применить новую конфигурацию, перезапустите службу ssh с помощью команды ниже.
sudo systemctl restart sshdSFTP-сервер готов и доступен, он работает на том же порту, что и служба SSH.
Доступ к SFTP-серверу
На стороне клиента мы будем использовать командную строку sftp, которая установлена по умолчанию на большинстве дистрибутивов Linux. Но вы также можете использовать другой клиент командной строки или GUI FTP-клиент, такой как FileZilla, Cyberduck и т. д.
- Чтобы подключиться к SFTP-серверу, выполните команду sftp, как указано ниже.
sftp ftpuser@SERVER-IPЕсли ваш SFTP и/или SSH-сервер работают на пользовательском порту, вы можете использовать команду sftp, как указано ниже.
sftp -P PORT ftpuser@SERVER-IPВведите пароль для ‘ sftpuser ‘.
- После подключения к SFTP-серверу выполните следующую команду.
Показать текущий рабочий каталог и перечислить все доступные файлы и каталоги.
pwd
ls
- Загрузите локальный файл на SFTP-сервер в каталог ‘/ ‘, что приведет к ошибке ‘ permission denied ‘, потому что это каталог chroot.
put /path/to/file/on/local /- Загрузите локальный файл в каталог ‘ /data/ ‘ на SFTP-сервере. Если ваша конфигурация правильная, ваш файл будет загружен в каталог ‘ /data/ ‘.
put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/
- Теперь проверьте доступные файлы в каталоге ‘ /data ‘ с помощью следующей команды.
ls /data/И вы увидите ваш файл, загруженный на SFTP-сервер.
Заключение
Поздравляем! Вы успешно настроили SFTP-сервер на системе Linux. Этот тип конфигурации можно применить на большинстве систем Linux с установленным OpenSSH. Также вы узнали, как настроить каталог chroot для пользователей SFTP и изучили основные команды клиента sftp.
Get new posts in your inbox
No spam. Unsubscribe anytime.