Skip to content

SFTP и SSHFS

Продолжаем тему FTP и рассмотрим протокол SFTP.

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

В сравнении с другим протоколом, тоже предназначенным для копирования файлов поверх SSH — протоколом SCP, который позволяет только копировать файлы, SFTP даёт возможность выполнять намного больше операций с ними: например, докачивать файл после разрыва соединения или удалять файл на сервере и многие другие операции.

Существует заблуждение, что SFTP это просто обычный FTP, работающий поверх SSH. В действительности SFTP — это новый протокол, разработанный с нуля. Ещё его иногда путают с Simple File Transfer Protocol. SFTP расшифровывается как SSH File Transfer Protocol и ничего общего с Simple File Transfer Protocol не имеет.

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

Сервер SFTP

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

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

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

Клиент SFTP

SFTP-клиент sftp встроен в пакет OpenSSH. Пример команд использования клиента SFTP:

sftp user@host:файл1

sftp скачивает файл1 с сервера и записывает его в текущий каталог с под именем файл1

sftp user@host:dir

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

В интерактивном режиме команды SFTP клиента похожи на команды FTP: get, cd, ls, mkdir, put, pwd, rm и пр.

Программа sftp использует в качестве транспорта ssh, и аутентификация на удалённом сервере выполняется средствами ssh.

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

Клиент SSHFS

Использование SFTP можно не только родным клиентом, но и SSHFS, дающим возможность монтировать файловую систему удаленной машины, на которой включен SFTP.

Пример команды монтирования через SSHFS:

sshfs user@host:dir local_mount_point ssh_options

Пример демонтирования:

fusermount -u local_mount_point

Также если вы часто монтируете одну и ту же директорию по SSHFS, ее можно внести в fstab для автоматического монтирования при включении машины, внеся следующую строку в /etc/fstab:

user@host:dir local_mount_point fuse.sshfs  defaults  0  0

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

Стоит понимать, что в отличие от NFS/SMB в SSHFS не предустановлено никаких механизмов для контроля доступа к одному файлу нескольких пользователей.

Источник 1

Источник 2

Источник 3

Источник 4

Источник 5

Источник 6