Статья давно не обновлялась, поэтому информация могла устареть.
Содержание |
Протокол 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 с сайта разработчика:
При его запуске откроется основное окно:
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'
Дополнительная информация
- SSH File Transfer Protocol draft-ietf-secsh-filexfer-02.txt
- man sftp
- WinSCP — свободный SFTP и FTP клиент для Windows; есть plugin для FAR
- Сравнение scp и sftp
Автор статьи - Игорь Чубин (http://xgu.ru/wiki/Участник:Igorchubin) (http://xgu.ru/wiki/SFTP)