Задать вопрос
Все статьи / VDS / SSH / Как установить SFTP-сервер на Linux
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Как установить SFTP-сервер на Linux

В этой статье мы подробно разберем, как настроить SFTP-сервер на Linux, используя стандартный SSH-демон.

Что такое SFTP и как он работает

SFTP (SSH File Transfer Protocol) – это протокол для безопасной передачи файлов, который работает поверх SSH. В отличие от классического FTP, он изначально использует шифрование и не передает данные в открытом виде. Благодаря этому SFTP подходит для работы в недоверенных сетях и считается стандартным решением для защищенного файлового обмена на Linux-серверах.

Принцип работы SFTP:

  • клиент устанавливает SSH-соединение с сервером;
  • после успешной аутентификации запускается SFTP-подсистема;
  • все команды управления файлами и сами данные передаются в зашифрованном виде внутри одного соединения.

SFTP поддерживает не только загрузку и скачивание файлов, но и операции с файловой системой: создание и удаление каталогов, переименование файлов, изменение прав доступа и просмотр содержимого директорий. При этом используется один сетевой порт (по умолчанию 22), что упрощает настройку firewall и снижает количество потенциальных точек атаки.

Отличие SFTP от FTP и FTPS

FTP (File Transfer Protocol) – классический протокол передачи файлов без встроенного шифрования. Логины, пароли и передаваемые данные отправляются в открытом виде, что делает FTP уязвимым к перехвату трафика. Кроме того, FTP использует несколько портов и отдельные соединения для управления и передачи данных, из-за чего его сложнее настраивать в сетях с firewall и NAT.

FTPS (FTP over SSL/TLS) – это расширение FTP, в котором безопасность добавляется за счет SSL/TLS. Передача данных и учетных данных шифруется, однако сама логика работы FTP сохраняется. FTPS по-прежнему требует настройки сертификатов и часто использует несколько портов, что усложняет администрирование и отладку сетевых проблем.

SFTP (SSH File Transfer Protocol) – отдельный протокол, не связанный с FTP на уровне реализации. Он работает поверх SSH, использует одно соединение и один порт, а шифрование включено по умолчанию. Аутентификация и контроль доступа полностью опираются на механизмы SSH, что делает SFTP более предсказуемым и удобным в управлении на Linux-серверах.

Ключевые отличия можно свести к нескольким пунктам:

  • безопасность: FTP не шифрует данные, FTPS и SFTP используют шифрование, но SFTP делает это без дополнительной настройки;
  • архитектура: FTP и FTPS используют отдельные каналы для управления и данных, SFTP работает в рамках одного SSH-соединения;
  • администрирование: SFTP проще интегрируется в существующую SSH-инфраструктуру и требует меньше сетевых настроек;
  • контроль доступа: SFTP позволяет гибко ограничивать действия пользователей на уровне файловой системы и сессии.

По этой причине в современных Linux-системах SFTP чаще всего выбирают как базовый и универсальный способ безопасной передачи файлов.

SFTP – это отдельный сервер?

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

Технически SFTP реализуется через специальный модуль (подсистему), который вызывается после успешной аутентификации пользователя по SSH. В конфигурации SSH-сервера указывается, какая программа отвечает за SFTP-сессии, и именно она обрабатывает команды передачи файлов и операции с каталогами.

Из этого следуют важные практические моменты:

  • SFTP использует тот же порт, что и SSH (по умолчанию 22);
  • управление доступом, аутентификацией и шифрованием полностью зависит от настроек SSH;
  • остановка SSH-сервера автоматически делает недоступным и SFTP.

Вы можете настроить SFTP так, чтобы пользователи работали только с файлами, но не имели доступа к оболочке. С помощью директив вроде ForceCommand internal-sftp и ChrootDirectory в конфигурации SSH легко ограничить их действия: запретить вход в систему и привязать к нужной папке. Все это делается в рамках стандартного SSH-сервера — отдельный сервис запускать не нужно, а безопасность при этом значительно повышается.

Роль SSH в работе SFTP

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

Через SSH SFTP получает следующие возможности:

  • шифрование всего трафика, включая команды управления и содержимое файлов;
  • проверку подлинности сервера и клиента, что защищает от подмены и атак типа «человек посередине»;
  • централизованное управление доступом пользователей и их правами;
  • использование одного сетевого порта и одного соединения для всей сессии.

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

Фактически SSH выступает фундаментом SFTP: без запущенного и корректно настроенного SSH-сервера работа SFTP невозможна.

Как установить SFTP-сервер

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

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

sudo apt install openssh-server            # Ubuntu/Debian
sudo yum -y install openssh-server openssh-clients   # CentOS/RHEL

Также SSH должен быть установлен на компьютере, с которого будет выполняться подключение к SFTP-серверу. Для Ubuntu и Debian это можно сделать так:

sudo apt install ssh

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

Шаг 1. Подготовка пользователей и каталогов для SFTP

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

Сначала создайте группу для SFTP-пользователей:

sudo groupadd sftpusers

Затем добавьте нового пользователя и включите его в созданную группу:

sudo useradd -g sftpusers sftpuser1
sudo passwd sftpuser1

Параметр -g указывает основную группу пользователя.

Далее подготовьте каталог, который будет использоваться как корневой для SFTP-доступа. Предположим, что общий каталог – /data, а для каждого пользователя создается отдельная директория с возможностью загрузки файлов только в подкаталог upload:

sudo mkdir -p /srv/sftp/sftpuser1/uploads

Назначьте владельцев и права доступа:

sudo chown -R root:sftpusers /srv/sftp/sftpuser1
sudo chown -R sftpuser1:sftpusers /srv/sftp/sftpuser1/uploads

Каталог /data/USERNAME должен принадлежать пользователю root – это обязательное условие для корректной работы SFTP с изоляцией пользователей.

Шаг 2. Настройка SSH-сервера для работы с SFTP

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

Откройте конфигурационный файл SSH-сервера:

sudo nano /etc/ssh/sshd_config

В конце файла добавьте следующий блок:

     Match Group sftpusers
     ChrootDirectory /srv/sftp/%u
     ForceCommand internal-sftp

Что делают эти параметры:

  • Match Group sftpusers – правило применяется только к пользователям из указанной группы;
  • ChrootDirectory /srv/sftp/%u – задает корневой каталог для пользователя и изолирует его от остальной файловой системы;
  • %u – автоматически подставляет имя текущего пользователя;
  • ForceCommand internal-sftp – запрещает интерактивный вход по SSH и запускает только SFTP.

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

После внесения изменений сохраните файл и переходите к следующему шагу. 

Шаг 3. Применение настроек и проверка работы SFTP

Изменения в настройках SSH не применяются сразу – нужно перезапустить службу SSH. Для этого перезапустите службу SSH:

sudo systemctl restart sshd

Если служба перезапустилась без ошибок, значит конфигурация синтаксически корректна и сервер готов к работе.

Теперь можно проверить подключение к SFTP. С клиентского компьютера выполните подключение, указав имя пользователя и адрес сервера:

sftp sftpuser1@server_ip

При успешной аутентификации пользователь сразу попадет в свой корневой каталог и не получит доступ к командной оболочке. Проверьте, что:

  • просмотр каталогов работает корректно;
  • загрузка файлов возможна только в каталог uploads;
  • переход выше корневого каталога невозможен.

Если подключение не удается, сначала проверьте владельца и права доступа к каталогу из ChrootDirectory, входит ли пользователь в нужную группу и нет ли ошибок в файле /etc/ssh/sshd_config.

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

Рекомендации по безопасности

Даже при базовой настройке SFTP уже обеспечивает высокий уровень защиты, однако для серверной среды рекомендуется дополнительно усилить конфигурацию.

  • Ограничьте доступ только SFTP. Для пользователей без доступа к оболочке настройте ForceCommand internal-sftp – так они не смогут выполнять команды, даже войдя на сервер.
  • Используйте SSH-ключи вместо паролей. Аутентификация по ключам значительно безопаснее паролей. Для SFTP-пользователей можно запретить вход по паролю и оставить только авторизацию по ключу.
  • Отключите вход под root. Запретите вход под root в SSH – это повышает безопасность. Администрировать сервер лучше через обычного пользователя с правами sudo.
  • Минимизируйте права пользователей. Разрешайте запись только в те каталоги, где это действительно необходимо. Корневой каталог SFTP должен принадлежать root и быть недоступным для записи пользователями.
  • Ограничьте доступ по IP-адресам. Если подключения идут с известных адресов, разрешите их в firewall или настройках SSH – это снизит риск взлома и атак перебора.
  • Следите за логами. Они помогут вовремя заметить попытки взлома или проблемы с настройкой доступа.
  • Держите систему и SSH в актуальном состоянии. Регулярно устанавливайте актуальные версии. Производители часто выпускают обновления безопасности, которые устраняют известные уязвимости. Даже при правильной настройке старая версия ПО может быть скомпрометирована, поэтому своевременные обновления – важная часть защиты.

Заключение

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

Предыдущая статья
Управление SSH-ключами
Следующая статья
Облачная платформа