Открыть сервис

SFTP

SFTP (от англ. SSH File Transfer Protocol) — это сетевой протокол прикладного уровня, предназначенный для передачи, управления и доступа к файлам на удалённом сервере через защищённое соединение. В отличие от FTPS (FTP over SSL/TLS), SFTP работает поверх протокола SSH (Secure Shell), обычно используя порт 22, и не требует отдельного порта для управления и передачи данных. Протокол обеспечивает шифрование как команд, так и передаваемых данных, что делает его одним из стандартных средств для безопасной передачи файлов в корпоративных и серверных средах.

История и разработка

SFTP был разработан в 1997 году как часть протокола SSH-2.0. Изначально он не являлся отдельным протоколом, а был расширением SSH, предложенным рабочей группой IETF (Internet Engineering Task Force). Первая спецификация (draft-ietf-secsh-filexfer) была опубликована в 2000 году, но окончательный стандарт так и не был утверждён. Несмотря на это, SFTP получил широкое распространение, и его реализация стала обязательной в большинстве SSH-клиентов и серверов.

Основные версии протокола:

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

Архитектура и принцип работы

SFTP работает в рамках сессии SSH, используя её каналы для передачи данных. В отличие от FTP, который использует два отдельных соединения (командное и данных), SFTP использует одно мультиплексированное соединение, что упрощает настройку брандмауэров и NAT.

Основные компоненты:

Этапы соединения:

  1. Установка TCP-соединения на порт 22 (по умолчанию).
  2. Аутентификация через SSH (пароль, ключи, GSSAPI, Kerberos).
  3. Инициализация SFTP-сессии: клиент отправляет запрос SSH_FXP_INIT, сервер отвечает SSH_FXP_VERSION.
  4. Выполнение файловых операций (чтение, запись, удаление, переименование, получение списка каталогов).
  5. Завершение сессии (закрытие SSH-канала).

Типы сообщений:

Каждое сообщение содержит уникальный идентификатор (ID), позволяющий серверу и клиенту сопоставлять запросы и ответы.

Отличия от других протоколов

SFTP vs FTPS

ХарактеристикаSFTPFTPS
Базовый протоколSSHSSL/TLS
Порты22 (один порт)21 (командный) + динамические (данные)
ШифрованиеВстроенное (SSH)Опциональное (через SSL)
АутентификацияПароль, ключи, GSSAPIПароль, сертификаты
Прокси-совместимостьПростая (один порт)Сложная (из-за двух портов)
Поддержка в WindowsЧерез сторонние клиентыВстроенная (IIS FTP)

SFTP vs SCP

SCP (Secure Copy) — более старый протокол, также работающий поверх SSH. Он проще, но менее функционален: не поддерживает список каталогов, возобновление прерванных передач, управление правами доступа. SFTP, в отличие от SCP, является полноценным протоколом для управления файлами.

SFTP vs WebDAV

WebDAV (Web Distributed Authoring and Versioning) — протокол на основе HTTP, поддерживающий блокировку файлов и версионирование. Он удобен для работы с файлами через веб-интерфейс, но менее безопасен (требует настройки HTTPS) и менее эффективен для больших файлов.

Реализации

Серверные реализации:

Клиентские реализации:

Применение

SFTP широко используется в следующих сценариях:

Безопасность

SFTP считается одним из самых безопасных протоколов для передачи файлов благодаря следующим особенностям:

Уязвимости и ограничения:

Альтернативы и конкуренты

Интересные факты

Источники

  1. IETF Draft: SSH File Transfer Protocol (draft-ietf-secsh-filexfer-13).
  2. OpenSSH Manual: sftp(1) и sftp-server(8).
  3. Bitvise SSH Server Documentation: SFTP Protocol Specifications.
  4. RFC 4251: The Secure Shell (SSH) Protocol Architecture.
  5. FileZilla Wiki: SFTP vs FTPS.
  6. WinSCP Documentation: SFTP Protocol Support.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →