url image

SFTP

Статья давно не обновлялась, поэтому информация могла устареть.

 

Содержание

Протокол SFTP

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

 

Сервер SFTP

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

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

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

Клиенты SFTP

FileZilla графический клиент

Для подключения по sFTP можно использовать клиент FileZilla. Для этого нужно скачать и установить клиент FileZilla с сайта разработчика:

FileZilla-Project.org

При его запуске откроется основное окно:

1. Вводим данные для подключения, HOST - IP адрес сервера; Username - Имя пользователя, можно использовать root; Password - пароль пользователя; Port - обычно 22, порт на котором работает SSH.

Как ввели все данные нажимаем кнопку Quickconnect.

Соединение с сервером установлен.

2. Данные расположенные на локальном компьютере.

3. Данные на удаленном сервере.

Чтобы скопировать данные нужно просто перенести данные из левой половины в правую.

WinSCP графический клиент

Консольный клиент sftp

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 хост и переходит в интерактивный режим работы.

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

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

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

Подробнее о синтаксисе sftp можно прочитать в тут.

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

Дополнительные вопросы

Как установить umask для SFTP-сервера?

Использовать ключ -u:

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

В крайнем случае, если sftp-server не поддерживает -u, можно использовать такую хитрость:

Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'

Дополнительная информация


Автор статьи - Игорь Чубин (http://xgu.ru/wiki/Участник:Igorchubin) (http://xgu.ru/wiki/SFTP)

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!