sftp

Sftp

SFTP (Secure File Transfer Protocol) — это утилита для безопасной передачи файлов между локальным и удалённым серверами через зашифрованное соединение на базе протокола SSH. В отличие от традиционного FTP, SFTP шифрует как команды, так и передаваемые данные, что обеспечивает защиту от перехвата и несанкционированного доступа. SFTP часто используется в Linux и Unix-подобных системах, а также может быть доступен в Windows через инструменты вроде PuTTY или OpenSSH. 

Синтаксис и опции

Базовый синтаксис команды:

sftp [options] [user@]host

где user — имя пользователя на удалённом сервере, а host — IP-адрес или доменное имя сервера. 

Некоторые опции:

  • -v — повышает уровень отладки (также передаётся в SSH); 
  • -b batchfile — пакетный режим: читает команды из файла batchfile вместо стандартного ввода. Требует неинтерактивной аутентификации; 
  • -s subsystem|sftp_server — указывает подсистему SSH2 или путь к SFTP-серверу на удалённой машине; 
  • -C — включает сжатие данных (через флаг ssh -C); 
  • -F ssh_config — задает альтернативный файл конфигурации SSH; 
  • -P port — указывает порт для подключения (по умолчанию — 22); 
  • -i path_to_key — использует приватный ключ для аутентификации вместо пароля; 
  • -R num_requests — задаёт количество одновременных запросов на передачу файлов; 
  • -B buffer_size — устанавливает размер буфера для передачи файлов (по умолчанию — 32768 байт). 

Пример подключения к серверу с указанием порта:

sftp -oPort=2222 user@host

Пример подключения с использованием приватного ключа:

sftp -i ~/.ssh/id_rsa user@host

Интерактивные команды

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

КомандаОписание
bye или exit или quitЗавершить сеанс SFTP. 
cd pathИзменить текущий удалённый каталог на path
lcd pathИзменить текущий локальный каталог на path
chgrp grp pathИзменить группу файла path на grp (цифровой GID). 
chmod mode pathИзменить права доступа файла path на mode
chown own pathИзменить владельца файла path на own (цифровой UID). 
get [flags] remote_path [local_path]Скачать файл с удалённого сервера. Если local_path не указан, файл сохраняется с тем же именем. Флаг -P копирует полные права доступа и время доступа к файлу. 
put local_path [remote_path]Загрузить файл на удалённый сервер. 
help или ?Вывести список доступных команд. 
lls [ls-options [path]]Отобразить содержимое локального каталога path или текущего локального каталога, если path не указан. 
lmkdir pathСоздать локальный каталог path
ln oldpath newpathСоздать символическую ссылку от oldpath к newpath1
lpwdВывести текущий локальный рабочий каталог. 
ls [flags] [path]Отобразить содержимое удалённого каталога path или текущего удалённого каталога, если path не указан. Флаг -l выводит подробную информацию (права доступа, владелец и т. д.), -la — включая скрытые файлы. 7
mkdir pathСоздать удалённый каталог path
pwdВывести текущий удалённый рабочий каталог. 
rm pathУдалить файл на удалённом сервере. 
rmdir pathУдалить каталог на удалённом сервере. Каталог должен быть пустым.
rename oldpath newpathПереименовать файл или каталог на удалённом сервере. 
symlink oldpath newpathСоздать символическую ссылку на удалённом сервере. 
!commandВыполнить команду command в локальной оболочке. 
!Переключиться в локальную оболочку. Для возврата в SFTP введите exit

Дополнительные возможности

  • Массовая передача файлов:
    • mget *.xls — скачать все файлы с расширением .xls с удалённого сервера. 
    • mput *.txt — загрузить все текстовые файлы из локального каталога на сервер.
  • Изменение маски umask для локальных операций: lumask umask
  • Просмотр версии SFTP: version

Особенности

  • SFTP поддерживает аутентификацию по паролю и с использованием SSH-ключей. 
  • Для работы с SFTP не требуется отдельный FTP-сервер — достаточно SSH-сервера. 
  • При необходимости выполнить команду на локальной машине без выхода из SFTP можно использовать префикс !(например, !ls выведет содержимое локального каталога).