Инструменты пользователя

Инструменты сайта


sftp

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

sftp [2018/08/13 08:35] (текущий)
Строка 1: Строка 1:
 +====== SFTP ======
 +
 +~~Title: SSH File Transfer Protocol (SFTP) настройка под хостинг Apache ~~
 +{{htmlmetatags>​
 +metatag-keywords=(SFTP)
 +metatag-description=(SFTP (SSH File Transfer Protocol) заменяет FTP на хостингах как более безопасный протокол.)
 +}}
 +
 +{{ ::​sftp-01.png?​nolink&​200 |}}
 +
 +
 +**SFTP** (SSH File Transfer Protocol) — протокол прикладного уровня,​ предназначенный для копирования и выполнения других операций с файлами поверх [[SSH]].
 +
 +Существует заблуждение,​ что SFTP это просто обычный [[FTP]], работающий поверх [[SSH]]. В действительности SFTP — это новый протокол,​ разработанный с нуля. Иногда его путают с Simple File Transfer Protocol.
 +
 +Сам по себе протокол SFTP не обеспечивает безопасность работы;​ это делает нижележащий протокол. Как правило,​ SFTP используется в сочетании с протоколом SSH2 (он даже был разработан той же рабочей группой). Можно использовать SFTP и с другими протоколами,​ например SSH1, но это сопряжено с дополнительными трудностями. ​
 +
 +Программа sftp использует в качестве транспорта ssh, и [[аутентификация]] на удалённом сервер выполняется средствами ssh. Если есть необходимость вместо ssh использовать другую программу,​ это можно сделать указав её имя в опции -S sftp.
 +
 +В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кросс-платформенный ftp -клиент Filezilla.
 +
 +===== Сервер SFTP  =====
 +
 +
 +  * [[proftpd#​nastrojka_proftpd_dlja_ispolzovanija_sftp|Настройка ProFTPd для использования SFTP]]
 +
 +**Сервер SFTP** встроен в OpenSSH. Он реализуется с помощью программы sftp-server. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле sshd_config в качестве подсистемы:​
 +<file bash>
 +Subsystem sftp /​usr/​lib/​openssh/​sftp-server
 +</​file>​
 +Как правило,​ это строка уже указана в конфигурационном файле sshd по умолчанию,​ так что SFTP работает сразу и не требует никаких дополнительных действий для включения.
 +
 +**Настройка ChrootDirectory в SFTP** для пользователей корпоративного [[Website Hosting|Website Hosting (веб хостинг)]].
 +
 +Источник:​ [[http://​blog.antage.name/​posts/​sftp-chroot-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D1%8E%D1%8E-%D0%BF%D0%B0%D0%BF%D0%BA%D1%83.html|SFTP:​ Chroot в домашнюю папку]]
 +
 +  * Для начала,​ создадим группу sftpusers. Настроим ChrootDirectory только для пользователей входящих в эту группу:<​file bash>
 +addgroup --system sftpusers
 +</​file>​
 +  * Далее заменим подсистему sftp в /​etc/​ssh/​sshd_config:<​file bash>
 +#Subsystem sftp /​usr/​lib/​openssh/​sftp-server
 +Subsystem sftp internal-sftp
 +</​file>​
 +  * Напишем нужные нам ограничения в самый конец файла sshd_config<​file bash>
 +Match Group sftpusers
 +   ​ChrootDirectory %h
 +#   ​ChrootDirectory /home
 +   ​ForceCommand internal-sftp
 +# установленный umask 007, соответствующий 0660 для файлов и 0770 для каталогов
 +   ​ForceCommand internal-sftp -u 0007
 +   ​AllowTcpForwarding no
 +   ​X11Forwarding no
 +</​file>​
 +<note tip>​Для Apache, если вы меняли umask для SFTP, также его нужно изменить. Делается это путём добавления в /​etc/​apache2/​envvars строчки:​ umask 007</​note>​
 +
 +
 +  * При создании пользователя не надо указывать ему [[shell]], так как он все равно не сможет им воспользоваться (Опция "​ForceCommand internal-sftp"​ разрешает пользователю использовать только sftp, встроенный в sshd). Поэтому указываем в качестве шелла /bin/false. Домашняя папка (точнее папка, которую мы указали в ChrootDirectory) обязательно должна иметь владельцем пользователя root. Иначе будем получать ошибку:<​file bash>
 +fatal: bad ownership or modes for chroot directory "/​home/​%username%"​
 +</​file>​А вот группу-владельца chroot-папки можно задать любую.
 +
 +**Расшифровка параметров sshd_config**
 +  * Match User позволяет серверу SSH применять следующие команды только к указанному пользователю
 +  * ForceCommand internal-sftp:​сервер SSH будет запускать SFTP во время логина без доступа к оболочке.
 +  * PasswordAuthentication yes включает поддержку парольной аутентификации.
 +  * ChrootDirectory %h блокирует пользователю доступ ко всем каталогам,​ кроме домашней директории пользователя.
 +  * AllowAgentForwarding no, AllowTcpForwarding no и X11Forwarding no отключают форвардинг,​ туннелирование и X11 для указанного пользователя.
 +====== Клиент sftp ======
 +
 +Форма вызова команды:​
 +<​file>​
 +    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
 +</​file>​
 +<​note>​Ключ -r для рекурсии.</​note>​
 +  * В первой форме sftp подключается к удалённому серверу SFTP хост и переходит в интерактивный режим работы.
 +  * Во втором случае sftp скачивает файл1 с сервера и записывает его в текущий каталог с под именем файл1 (или файл2, если это имя указано). Например,​ скачать файл mytestfile.sql:<​file>​
 +$ sftp user@mb.test.net:/​home/​backups_mbill_sql/​mytestfile.sql
 +</​file>​Скачать все файлы соответствующие шаблону *.sql<​file>​
 +$ sftp user@mb.test.net:/​home/​backups_mbill_sql/​*.sql
 +</​file>​
 +  * Третья форма, также как и первая,​ переводит sftp в интерактивный режим; с той только разницей,​ что работа на удалённом сервере начинается с определённого каталога.
 +  * В четвёртой форме после подключения к серверу выполняется batchfile, содержащий команды sftp. В качестве имени файла может быть указан символ -, в этом случае batchfile читается со стандартного потока ввода.
 +
 +
  
sftp.txt · Последние изменения: 2018/08/13 08:35 (внешнее изменение)