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

SSH File Transfer Protocol

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

История

Протокол SFTP был разработан в рамках проекта IETF (Internet Engineering Task Force) как часть набора протоколов SSH-2. В отличие от FTP, который был создан в 1971 году и изначально не предусматривал шифрования, SFTP проектировался с учётом требований безопасности. Первая версия протокола была предложена в 2000 году в черновике draft-ietf-secsh-filexfer-00.txt. Разработка велась параллельно с созданием протокола SSH-2, который заменил устаревший и менее безопасный SSH-1.

Основные вехи развития:

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

SFTP часто путают с FTPS и FTP over SSH, однако между ними есть принципиальные различия.

SFTP vs. FTPS

SFTP vs. FTP over SSH

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

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

Основные этапы сессии SFTP:

  1. Установка SSH-соединения: Клиент подключается к серверу по порту 22 (по умолчанию). Происходит аутентификация (по паролю, ключу или другим методам).
  2. Запуск подсистемы SFTP: После успешной аутентификации клиент отправляет запрос на запуск подсистемы SFTP. Сервер отвечает подтверждением.
  3. Обмен командами и данными: В рамках подсистемы клиент и сервер обмениваются пакетами SFTP. Каждый пакет содержит команду (например, OPEN, READ, WRITE, REMOVE, RENAME) и связанные с ней данные (путь к файлу, дескриптор, буфер данных).
  4. Завершение сессии: По окончании работы клиент отправляет команду закрытия подсистемы, после чего SSH-соединение разрывается.

Классификация и версии

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

Применение

SFTP широко используется в различных сферах, где требуется безопасная передача файлов.

Администрирование серверов

Системные администраторы используют SFTP для удалённого управления файлами на серверах: загрузка конфигурационных файлов, резервное копирование, установка обновлений. Благодаря интеграции с SSH, SFTP часто является единственным доступным способом передачи файлов на серверы, где отключён FTP или HTTP.

Разработка и деплой

Разработчики применяют SFTP для загрузки кода на веб-серверы, обновления приложений и синхронизации проектов. Многие IDE и текстовые редакторы (например, VS Code, Sublime Text) поддерживают SFTP через плагины.

Автоматизация и скрипты

SFTP используется в скриптах и cron-задачах для автоматической передачи файлов. Утилиты командной строки, такие как sftp (входит в состав OpenSSH), позволяют легко интегрировать SFTP в скрипты на Bash, Python или других языках.

Облачные хранилища и сервисы

Некоторые облачные сервисы (например, DigitalOcean Spaces, Linode Object Storage) предоставляют доступ к файлам через SFTP, что позволяет использовать стандартные клиенты для работы с удалёнными данными.

Реализации

Существует множество реализаций SFTP как для серверной, так и для клиентской стороны.

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

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

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

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

Критика и ограничения

Несмотря на широкое распространение, SFTP имеет ряд недостатков:

Источники

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

На главную BFOmetr →