sftp — безопасная передача файлов OpenSSH
КРАТКОЕ ОПИСАНИЕ
sftp [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_command]
[-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port]
[-R num_requests] [-S program] [-s subsystem | sftp_server] [-X sftp_option] destination
ОПИСАНИЕ
sftp — это программа для передачи файлов, подобная ftp(1), которая выполняет все операции по зашифрованному каналу ssh(1). Она также может использовать многие функции ssh, такие как аутентификация с использованием открытых ключей и сжатие.
Назначение можно указать либо как [user@]host[:path], либо в виде URI в формате sftp://[user@]host[:port][/path].
Если назначение включает путь и это не каталог, sftp автоматически извлечет файлы, если используется неинтерактивный метод аутентификации; в противном случае это произойдет после успешной интерактивной аутентификации.
Если путь не указан или путь является каталогом, sftp войдет в указанный хост и перейдет в интерактивный режим команд, перейдя в указанный удаленный каталог, если он был указан. Необязательный завершающий слеш можно использовать, чтобы указать, что путь следует интерпретировать как каталог.
Поскольку форматы назначения используют символы двоеточия для отделения имен хостов от имен путей или номеров портов, адреса IPv6 должны быть заключены в квадратные скобки, чтобы избежать неоднозначности.
Параметры следующие:
-4 Принудительно использует sftp только IPv4-адреса.
-6 Принудительно использует sftp только IPv6-адреса.
-A Разрешает пересылку ssh-agent(1) на удаленную систему. По умолчанию пересылка
агента аутентификации отключена.
-a Пытается продолжить прерванные передачи, а не перезаписывать существующие частичные или
полные копии файлов. Если частичное содержимое отличается от передаваемого,
то полученный файл, скорее всего, будет поврежден.
-B buffer_size
Указывает размер буфера, который sftp использует при передаче файлов. Большие буферы требуют меньшего количества раундов за счет увеличения потребления памяти. По умолчанию 32768 байт.
-b batchfile
Режим пакетной обработки считывает серию команд из входного файла пакетов вместо стандартного ввода. Поскольку в нем отсутствует взаимодействие с пользователем, его следует использовать в сочетании с неинтерактивной аутентификацией, чтобы исключить необходимость ввода пароля во время установления соединения (см. sshd(8) и ssh-keygen(1) для получения подробной информации).
Файл пакетов «-» можно использовать для указания стандартного ввода. sftp завершит работу, если какая-либо из
следующих команд не удастся: get, put, reget, reput, rename, ln, rm, mkdir, chdir, ls,
lchdir, copy, cp, chmod, chown, chgrp, lpwd, df, symlink и lmkdir.
По ошибке можно отключить завершение работы команды, поставив перед командой символ ‘-’ (например, -rm /tmp/blah*). Отображение команды можно отключить, поставив перед командой символ ‘@’. Эти два префикса можно комбинировать в любом порядке, например, -@ls /bsd.
-C Включает сжатие (через флаг -C в ssh).
-c cipher
Выбирает шифр для шифрования передаваемых данных. Эта опция передается непосредственно в [ssh]({filename}../../ssh)(1).
-D sftp_server_command
Подключается непосредственно к локальному SFTP-серверу (а не через [ssh]({filename}../../ssh)(1)). Можно указать команду и аргументы, например, "/path/sftp-server -el debug3". Эта опция может быть полезна для отладки клиента и сервера.
-F ssh_config
Указывает альтернативный файл конфигурации для каждого пользователя для [ssh]({filename}../../ssh)(1). Эта опция передается непосредственно в [ssh]({filename}../../ssh)(1).
-f Запрашивает немедленную запись файлов на диск после передачи. При загрузке файлов эта функция включается только в том случае, если сервер реализует расширение "_".
-i identity_file
Выбирает файл, из которого считывается идентификатор (приватный ключ) для аутентификации с использованием открытого ключа. Эта опция передается непосредственно в [ssh]({filename}../../ssh)(1).
-J destination
Подключается к целевому хосту, сначала устанавливая SFTP-соединение с промежуточным хостом, указанным в destination, а затем устанавливая TCP-туннель до конечного назначения. Можно указать несколько промежуточных узлов, разделенных запятыми. Это сокращенный способ указания директивы ProxyJump. Эта опция передается непосредственно в [ssh]({filename}../../ssh)(1).
-l limit
Ограничивает используемую полосу пропускания, указанную в Кбит/с.
-N Отключает тихий режим, например, для отмены неявного тихого режима, установленного флагом -b.
-o ssh_option
Можно использовать для передачи параметров в ssh в формате, используемом в ssh_config(5). Это полезно для указания параметров, для которых нет отдельного флага командной строки sftp. Например, для указания альтернативного порта используйте: sftp -oPort=24. Для получения полной информации об опциях, перечисленных ниже, и их возможных значениях, обратитесь к ssh_config(5).
AddKeysToAgent
AddressFamily
BatchMode
BindAddress
BindInterface
CASignatureAlgorithms
CanonicalDomains
CanonicalizeFallbackLocal
CanonicalizeHostname
CanonicalizeMaxDots
CanonicalizePermittedCNAMEs
CertificateFile
ChannelTimeout
CheckHostIP
Ciphers
ClearAllForwardings
Compression
ConnectTimeout
ConnectionAttempts
ControlMaster
ControlPath
ControlPersist
DynamicForward
EnableEscapeCommandline
EnableSSHKeysign
EscapeChar
ExitOnForwardFailure
FingerprintHash
ForkAfterAuthentication
ForwardAgent
ForwardX11
ForwardX11Timeout
ForwardX11Trusted
GSSAPIAuthentication
GSSAPIDelegateCredentials
GatewayPorts
GlobalKnownHostsFile
HashKnownHosts
Host
HostKeyAlgorithms
HostKeyAlias
HostbasedAcceptedAlgorithms
HostbasedAuthentication
Hostname
IPQoS
IdentitiesOnly
IdentityAgent
IdentityFile
IgnoreUnknown
Include
KbdInteractiveAuthentication
KbdInteractiveDevices
KexAlgorithms
KnownHostsCommand
LocalCommand
LocalForward
LogLevel
LogVerbose
MACs
NoHostAuthenticationForLocalhost
NumberOfPasswordPrompts
ObscureKeystrokeTiming
PKCS11Provider
PasswordAuthentication
PermitLocalCommand
PermitRemoteOpen
Port
PreferredAuthentications
ProxyCommand
ProxyJump
ProxyUseFdpass
PubkeyAcceptedAlgorithms
PubkeyAuthentication
RekeyLimit
RemoteCommand
RemoteForward
RequestTTY
RequiredRSASize
RevokedHostKeys
SecurityKeyProvider
SendEnv
ServerAliveCountMax
ServerAliveInterval
SessionType
SetEnv
StdinNull
StreamLocalBindMask
StreamLocalBindUnlink
StrictHostKeyChecking
SyslogFacility
TCPKeepAlive
Tag
Tunnel
TunnelDevice
UpdateHostKeys
User
UserKnownHostsFile
VerifyHostKeyDNS
VisualHostKey
XAuthLocation
-P порт
Указывает порт, к которому нужно подключиться на удаленном хосте.
-p Сохраняет время изменения, время доступа и режимы исходных файлов, передаваемых при копировании.
-q Тихий режим: отключает индикатор выполнения, а также предупреждающие и диагностические сообщения из
ssh(1).
-R num_requests
Указывает, сколько запросов может быть одновременно в процессе выполнения. Увеличение этого значения может незначительно улучшить скорость передачи файлов, но увеличит использование памяти. По умолчанию 64 одновременных запроса.
-r Рекурсивно копирует целые каталоги при загрузке и скачивании. Обратите внимание, что sftp не
переходит по символическим ссылкам, обнаруженным при обходе дерева каталогов.
-S программа
Имя программы, используемой для зашифрованного соединения. Программа должна понимать ssh(1) опции.
-s подсистема | sftp_server
Указывает подсистему SSH2 или путь к серверу sftp на удаленном хосте. Путь полезен, когда на удаленном sshd(8) не настроена подсистема sftp.
-v Повышает уровень ведения журнала. Эта опция также передается в ssh.
-X sftp_option
Указывает опцию, которая управляет аспектами поведения протокола SFTP. Допустимые опции:
nrequests=значение
Управляет количеством одновременных запросов SFTP на чтение или запись, которые могут быть в процессе выполнения в любой момент времени во время скачивания или загрузки. По умолчанию 64 запроса могут быть активными одновременно.
buffer=значение
Управляет максимальным размером буфера для одной операции чтения/записи SFTP, используемой во время скачивания или загрузки. По умолчанию используется буфер размером 32 КБ.
ИНТЕРАКТИВНЫЕ КОМАНДЫ
В интерактивном режиме sftp понимает набор команд, аналогичных командам ftp(1). Команды не чувствительны к регистру. Пути, содержащие пробелы, должны быть заключены в кавычки. Любые специальные символы, содержащиеся в путях, которые распознаются glob(3), должны быть экранированы обратными слешами (‘\’).
bye Выйти из sftp.
cd [путь]
Изменить удаленный каталог на путь. Если путь не указан, то перейти в каталог, в котором началась сессия.
chgrp [-h] grp path
Изменить группу файла path на grp. path может содержать символы glob(7) и может соответствовать нескольким файлам. grp должен быть числовым GID.
Если указан флаг -h, символические ссылки не будут обрабатываться. Обратите внимание, что это поддерживается только серверами, реализующими расширение "_".
chmod [-h] mode path
Изменить разрешения файла path на mode. path может содержать символы glob(7) и может соответствовать нескольким файлам.
Если указан флаг -h, символические ссылки не будут обрабатываться. Обратите внимание, что это поддерживается только серверами, реализующими расширение "_".
chown [-h] own path
Изменить владельца файла path на own. path может содержать символы glob(7) и может соответствовать нескольким файлам. own должен быть числовым UID.
Если указан флаг -h, символические ссылки не будут обрабатываться. Обратите внимание, что это поддерживается только серверами, реализующими расширение "_".
copy oldpath newpath
Скопировать удаленный файл из oldpath в newpath.
Обратите внимание, что это поддерживается только серверами, реализующими расширение "copy-data".
cp oldpath newpath
Псевдоним для команды copy.
df [-hi] [path]
Отобразить информацию об использовании дискового пространства для файловой системы, содержащей текущий каталог (или path, если указан). Если указан флаг -h, информация о емкости будет отображаться с использованием "удобных для чтения" суффиксов. Флаг -i запрашивает отображение информации об inode в дополнение к информации об емкости. Эта команда поддерживается только на серверах, реализующих расширение "_".
exit Выйти из sftp.
get [-afpR] remote-path [local-path]
Извлечь remote-path и сохранить его на локальной машине. Если локальный путь не указан, он будет иметь то же имя, что и на удаленной машине. remote-path может содержать символы glob(7) и может соответствовать нескольким файлам. Если это так, и local-path указан, то local-path должен указывать на каталог.
Если указан флаг -a, то будет предпринята попытка возобновить частичную передачу существующих файлов. Обратите внимание, что возобновление предполагает, что любая частичная копия локального файла соответствует удаленной копии. Если содержимое удаленного файла отличается от частичной локальной копии, то результирующий файл, скорее всего, будет поврежден.
Если указан флаг -f, то после завершения передачи файла будет вызван fsync(2), чтобы сбросить файл на диск.
Если указан флаг -p, то будут скопированы также полные разрешения файлов и время доступа.
Если указан флаг -R, то каталоги будут копироваться рекурсивно. Обратите внимание, что sftp не следует за символическими ссылками при выполнении рекурсивных передач.
help Отобразить текст справки.
lcd [path]
Изменить локальный каталог на path. Если path не указан, то перейти в локальный домашний каталог пользователя.
lls [ls-options [path]]
Отобразить локальный список каталога либо path, либо текущего каталога, если path не указан. ls-options может содержать любые флаги, поддерживаемые локальной командой ls(1). path может содержать символы glob(7) и может соответствовать нескольким файлам.
lmkdir путь
Создать локальный каталог, указанный в пути.
ln [-s] старый_путь новый_путь
Создать ссылку из старого_пути в новый_путь. Если указан флаг -s, созданная ссылка будет символической, в противном случае — жесткой.
lpwd Вывести локальный рабочий каталог.
ls [-1afhlnrSt] [путь]
Отобразить удаленный список каталога либо пути, либо текущего каталога, если путь не указан. Путь может содержать символы подстановки и может соответствовать нескольким файлам.
Следующие флаги распознаются и изменяют поведение ls следующим образом:
-1 Выводить в виде одного столбца.
-a Перечислить файлы, начинающиеся с точки («.»).
-f Не выполнять сортировку списка. По умолчанию используется лексикографический порядок сортировки.
-h При использовании с опцией длинного формата использовать суффиксы единиц измерения: байт, килобайт, мегабайт, гигабайт, терабайт, петабайт и эксабайт, чтобы уменьшить количество цифр до четырех или меньше, используя степени 2 для размеров (К=1024, М=1048576 и т. д.).
-l Отображать дополнительные сведения, включая информацию о разрешениях и владельце.
-n Выводить длинный список с информацией о пользователе и группе в числовом виде.
-r Изменить порядок сортировки списка.
-S Сортировать список по размеру файла.
-t Сортировать список по времени последнего изменения.
lumask umask
Установить локальную umask в umask.
mkdir путь
Создать удаленный каталог, указанный в пути.
progress
Переключить отображение индикатора выполнения.
put [-afpR] локальный_путь [удаленный_путь]
Загрузить локальный_путь и сохранить его на удаленной машине. Если удаленный_путь не указан, ему присваивается то же имя, что и на локальной машине. Локальный_путь может содержать символы подстановки и может соответствовать нескольким файлам. Если это так, и удаленный_путь указан, то удаленный_путь должен указывать на каталог.
Если указан флаг -a, то попытаться возобновить частичную передачу существующих файлов. Обратите внимание, что возобновление предполагает, что любая частичная копия удаленного файла соответствует локальной копии. Если содержимое локального файла отличается от удаленной локальной копии, результирующий файл, скорее всего, будет поврежден.
Если указан флаг -f, то на сервер будет отправлен запрос на вызов fsync(2) после передачи файла. Обратите внимание, что это поддерживается только серверами, которые реализуют расширение "_".
Если указан флаг -p, то также копируются полные разрешения на файлы и время доступа.
Если указан флаг -R, то каталоги будут копироваться рекурсивно. Обратите внимание, что sftp не следует за символическими ссылками при выполнении рекурсивных передач.
pwd Отобразить удаленный рабочий каталог.
quit Выйти из sftp.
reget [-fpR] удаленный_путь [локальный_путь]
Возобновить загрузку удаленного_пути. Эквивалентно get с установленным флагом -a.
reput [-fpR] локальный_путь [удаленный_путь]
Возобновить загрузку локального_пути. Эквивалентно put с установленным флагом -a.
rename oldpath newpath
Переименовать удаленный файл из oldpath в newpath.
rm path
Удалить удаленный файл, указанный в path.
rmdir path
Удалить удаленную директорию, указанную в path.
symlink oldpath newpath
Создать символическую ссылку из oldpath в newpath.
version
Отобразить версию протокола sftp.
!command
Выполнить команду в локальной оболочке.
! Переход в локальную оболочку.
? Синоним для help.
ССЫЛКИ
ftp(1), ls(1), scp(1), ssh(1), ssh-add(1), ssh-keygen(1), ssh_config(5), glob(7), sftp-server(8), sshd(8)
Т. Йлонен и С. Лехтинен, SSH File Transfer Protocol, draft-ietf-secsh-filexfer-00.txt, январь
2001, рабочая версия.