SFTP (SSH File Transfer Protocol)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:58, 14 мая 2016.
SFTP
Уровень (по модели OSI): Прикладной
Семейство: стек протоколов TCP/IP
Порт/ID: 67, 68/UDP
Назначение протокола: Получение сетевой конфигурации
Спецификация: RFC 2131
Основные реализации (серверы): dhcpd, ISC DHCP Server, Infoblox
Вступил в силу с: 1990

SFTP(англ. SSH File Transfer Protocol, also Secure File Transfer Protocol) — SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Протокол разработан группой Internet Engineering Task Force(IETF) как расширение к SSH-2, однако SFTP допускает реализацию и с использованием иных протоколов сеансового уровня.

Протокол предполагает, что он работает поверх установленного безопасного канала, что сервер уже аутентифицировал клиента и что идентификатор клиента доступен протоколу. Сервер SFTP обычно использует порт 22.

Возможности SFTP

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

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

SSH File Transfer Protocol не является протоколом FTP работающим поверх SSH — это другой, новый протокол. Также SFTP иногда путают с Simple File Transfer Protocol из-за совпадающего сокращения «SFTP».

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

Загруженные файлы могут быть связаны с их основными атрибутами, такими как метки времени. Это является преимуществом перед протоколом FTP, у которого нет условия для загрузок, чтобы включать исходный атрибут даты/метки времени без справки.

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

Разработкой протокола занималась одна из групп IETF под названием Secsh — группа, ранее подготовившая стандарт SSH-2. Рабочая документация к новому протоколу SFTP не стала официальным стандартом, однако начала активно применяться для разработки приложений. В ходе развития протокола было выпущено шесть версий протокола. Постепенное наращивание функциональности протокола привело к тому, что 14 августа 2006 года было принято решение о прекращении работы над развитием протокола в связи с выполнением основной задачи проекта (разработка SSH) и отсутствием достаточного экспертного уровня для перехода к разработке полноценного протокола удалённой файловой системы[1].

Версии 0 - 2

До участия группы IETF, SFTP был проприетарный протокол SSH Communications Security , разработанный Tatu Ylonen при содействии Sami Lehtinen в 1997 году[2] Различия между версиями 0 - 2 и версии 3 перечислены в section 10 of draft-ietf-secsh-filexfer-02 .

Версия 3

В начале защищенного проекта передачи файлов с IETF, группа Secsh заявила, что ее цель протокола передачи SSH File обеспечить безопасную функциональность передачи файлов по любому надежному потоку данных, и быть стандартным протоколом передачи файлов для использования с SSH-2 протокола. Drafts 00 - 02 в IETF Internet Draft определяют последовательные изменения 3-й версии протокола SFTP.

Версия 4

Drafts 03 - 04 в IETF Internet Draft определяют версию 4 протокола.

Версия 5

Draft 05 в IETF Internet Draft определяет версии 5 протокола.

Версия 6

Drafts 06 - 13 в IETF Internet Draft определяют последовательные изменения 6-й версии протокола.

SFTP Клиент

SFTP-клиент встроен в пакет OpenSSH.

Форма вызова команды:

   sftp [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config]
        [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program]
        [-s subsystem | sftp_server] хост
   sftp [[user@]host[:файл1 [файл2]]]
   sftp [[user@]host[:dir[/]]]
   sftp -b batchfile [user@]host 

В первой форме sftp подключается к удалённому серверу SFTP хост и переходит в интерактивный режим работы.

Окно WinSCP Commander в одном из режимов работы

Во втором случае sftp скачивает файл1 с сервера и записывает его в текущий каталог с под именем файл1 (или файл2, если это имя указано).

Третья форма, также как и первая, переводит sftp в интерактивный режим; с той только разницей, что работа на удалённом сервере начинается с определённого каталога.

В четвёртой форме после подключения к серверу выполняется batchfile, содержащий команды sftp. В качестве имени файла может быть указан символ -, в этом случае batchfile читается со стандартного потока ввода.

Подробнее о синтаксисе sftp можно прочитать в sftp(1)[3].

Программа sftp использует в качестве транспорта ssh, и аутентификация на удалённом сервер выполняется средствами ssh. Если есть необходимость вместо ssh использовать другую программу, это можно сделать указав её имя в опции -S sftp.

В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кросс-платформенный ftp-клиент Filezilla.

SFTP Сервер

SFTP-сервер встроен в OpenSSH. Он реализуется с помощью программы sftp-server. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле sshd_config в качестве подсистемы:

      Subsystem sftp /usr/lib/openssh/sftp-server 

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

Примечания

См. также