Введение

Сетевой протокол, обеспечивающий управление файлами через любой надежный поток данных. В информатике протокол SSH File Transfer Protocol (также известный как Secure File Transfer Protocol или SFTP) — это сетевой протокол, обеспечивающий доступ к файлам, передачу файлов и управление файлами через любой надежный поток данных. Он был разработан Internet Engineering Task Force (IETF) как расширение протокола Secure Shell (SSH) версии 2.0 для обеспечения безопасных возможностей передачи файлов и рассматривается как замена протокола передачи файлов (FTP) благодаря более высокой безопасности. В черновике IETF Internet Draft указано, что, хотя этот протокол описан в контексте протокола SSH 2, он может использоваться в различных приложениях, таких как безопасная передача файлов через Transport Layer Security (TLS) и передача управляющей информации в VPN-приложениях. Этот протокол предполагает, что он работает по защищенному каналу, например, SSH, что сервер уже аутентифицировал клиента и что идентификационные данные пользователя клиента доступны протоколу.

Способность

По сравнению с протоколом SCP, который обеспечивает только передачу файлов, протокол SFTP позволяет выполнять широкий спектр операций с удалёнными файлами, что делает его более похожим на протокол удалённой файловой системы. Дополнительные возможности SFTP-клиента включают возобновление прерванных передач, просмотр содержимого каталогов и удаление удалённых файлов. Также поддерживаются все типы файлов UNIX, включая символические ссылки. SFTP стремится к большей платформенной независимости, чем SCP; например, в SCP расширение подстановочных знаков, указанных клиентом, зависит от сервера, в то время как конструкция SFTP позволяет избежать этой проблемы. Хотя SCP чаще всего реализуется на платформах Unix, SFTP-серверы обычно доступны на большинстве платформ. В SFTP передачу файла можно легко прервать, не завершая сеанс, как это происходит в других механизмах. SFTP – это не FTP, работающий через SSH, а новый протокол, разработанный с нуля рабочей группой IETF SECSH. Его иногда путают с простым протоколом передачи файлов (Simple File Transfer Protocol). Сам протокол не предоставляет механизмы аутентификации и безопасности, предполагая, что их обеспечивает базовый протокол. SFTP чаще всего используется как подсистема в реализациях протокола SSH версии 2, разработанного той же рабочей группой. Однако его можно использовать и через SSH 1 (некоторые реализации это поддерживают), или другие потоки данных. Запуск SFTP-сервера через SSH 1 не является платформенно-независимым, поскольку SSH 1 не поддерживает концепцию подсистем. SFTP-клиенту, желающему подключиться к серверу SSH 1, необходимо знать путь к исполняемому файлу SFTP-сервера на стороне сервера. Загружаемые файлы могут быть связаны со своими основными атрибутами, такими как временные метки. Это является преимуществом по сравнению с обычным протоколом FTP.

История и развитие

Рабочая группа Internet Engineering Task Force (IETF) "Secsh", ответственная за разработку протокола Secure Shell версии 2 (RFC 4251), также предприняла попытку разработать расширение этого стандарта для обеспечения безопасной передачи файлов. Создавались черновики интернет-документов, последовательно пересматривавшие протокол и создававшие новые версии. Программная индустрия начала внедрять различные версии протокола до того, как черновики были стандартизированы. По мере развития работы область проекта Secsh File Transfer расширилась и включила в себя доступ к файлам и управление ими. В конечном итоге разработка остановилась, поскольку некоторые члены комитета стали рассматривать SFTP как протокол файловой системы, а не просто протокол доступа к файлам или передачи файлов, что выходило за рамки компетенции рабочей группы. После семилетнего перерыва в 2013 году была предпринята попытка возобновить работу над SFTP, взяв за основу черновик версии 3.

Версии 02

До участия IETF, SFTP был проприетарным протоколом компании SSH Communications Security, разработанным Тату Йлёненом при содействии Сами Лехтинена в 1997 году. Различия между версиями 0–2 и версией 3 подробно описаны в разделе 10 черновика ietf secsh filexfer 02.

Расширения

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

Клиент SFTP

Термин SFTP также может обозначать программу для безопасной передачи файлов, программу командной строки, реализующую клиентскую часть этого протокола. Например, программа sftp, поставляемая с OpenSSH, является одной из таких реализаций. Некоторые реализации программы scp поддерживают как протоколы SFTP, так и SCP для передачи файлов, в зависимости от возможностей сервера. Программа scp, поставляемая с OpenSSH версии 9.0 и выше, по умолчанию использует SFTP.

Сервер SFTP

Некоторые реализации FTP-серверов поддерживают протокол SFTP; однако, вне специализированных файловых серверов, поддержка протокола SFTP обычно предоставляется реализацией SSH-сервера, поскольку он использует порт 22 по умолчанию совместно с другими службами SSH. Реализации SFTP могут включать в себя реализацию протокола SSH для использования интеграции данных о SSH-соединении с существующими средствами контроля доступа к FTP-серверу, если допустимо использование альтернативного SSH-сервера или альтернативных портов. SSH-сервер версии 2, поддерживающий подсистемы, можно использовать для сохранения единой реализации SSH при одновременном усилении контроля доступа с помощью стороннего программного обеспечения, но это может привести к снижению детальной интеграции с данными о соединении и совместимости с SSH версии 1.

Прокси SFTP

Трудно контролировать передачи SFTP на устройствах безопасности, расположенных на периметре сети. Для регистрации транзакций FTP существуют стандартные инструменты, такие как TIS gdev или SUSE FTP proxy, однако SFTP использует шифрование, что делает традиционные прокси-серверы неэффективными для контроля SFTP-трафика. Существуют инструменты, реализующие технологию "человек посередине" (Man-in-the-Middle) для SSH, которые также обеспечивают контроль над SFTP. Примерами таких инструментов являются Shell Control Box от Balabit и CryptoAuditor от SSH Communications Security (первоначальный разработчик протокола Secure Shell), предоставляющий функции, такие как ведение журналов транзакций SFTP и регистрация фактических данных, передаваемых по сети.