Содержание

SFTP

SFTP (SSH File Transfer Protocol) — протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх Использование ssh, ssh-keygen, sshpass с примерами.

Существует заблуждение, что SFTP это просто обычный Раздел FTP: Протокол FTP, серверы, клиенты FTP для Linux и Windows, работающий поверх Использование ssh, ssh-keygen, sshpass с примерами. В действительности SFTP — это новый протокол, разработанный с нуля. Иногда его путают с Simple File Transfer Protocol.

Сам по себе протокол SFTP не обеспечивает безопасность работы; это делает нижележащий протокол. Как правило, SFTP используется в сочетании с протоколом SSH2 (он даже был разработан той же рабочей группой). Можно использовать SFTP и с другими протоколами, например SSH1, но это сопряжено с дополнительными трудностями.

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

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

Читайте также: Как примонтировать папку по sftp

Настройка сервера SFTP

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

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

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

Настройка ChrootDirectory в SFTP

Для Apache, если вы меняли umask для SFTP, также его нужно изменить. Делается это путём добавления в /etc/apache2/envvars строчки: umask 007

Расшифровка параметров sshd_config

SFTP доступ

Для каждого сайта создадим системного пользователя ftpjoo для доступа по протоколу SFTP с группой www-data, от которой работает Apache.

useradd -d /var/www/mysite.com -s /bin/false -g www-data ftpjoo

В самый конец файла sshd_config напишем:

Match Group www-data
   ChrootDirectory %h
   ForceCommand internal-sftp -u 0007
   AllowTcpForwarding no
   X11Forwarding no

Зададим права для директорий, выполнив файл

permission_commands
#!/bin/bash
 
find /var/www/mysite.com -type f -exec chmod 660 {} \;
find /var/www/mysite.com -type d -exec chmod 770 {} \;
chown -R ftpjoo:www-data /var/www/mysite.com;
chmod 755 /var/www/mysite.com;
chown root:root /var/www/mysite.com;

Клиент sftp

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

    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
Ключ -r для рекурсии.