SFTP (Safe File Transfer Protocol) - это часть протокола SSH, предназначенная для безопасной передачи файлов между удаленными системами. Он позволяет пользователям просматривать, управлять и изменять разрешения файлов и каталогов на удаленных системах.
Список команд и опций SFTP
SFTP позволяет пользователям передавать данные между удаленным SFTP-сервером и локальной клиентской системой. SFTP использует сетевой протокол SSH для соединения двух систем, имеющих общий открытый ключ SSH.
При подключении к серверу SFTP открывается интерфейс оболочки SFTP. Интерфейс оболочки SFTP поддерживает следующие команды:
Команда | Описание |
cd [путь] | Измените каталог на удаленном сервере на [путь] |
lcd [путь] | Измените каталог в локальной системе на [путь] |
chgrp [ID группы] [путь] | Измените владельца группы на [идентификатор группы] для файла или папки, расположенной по адресу [путь] |
chmod [режим] [путь] | Изменить право владельца на [режим] для файла или папки, расположенной по адресу [путь] |
chown [ID пользователя] [путь] | Измените владельца на [идентификатор пользователя] для файла или папки, расположенной по адресу [путь] |
help | Вывод текста справки |
get [удаленный путь] [локальный путь] | Передача файла или каталога из [удаленный путь] на удаленном сервере в [локальный путь] на локальной системе |
lls [опции] [путь] | Вывести листинг для каталога, расположенного по адресу [path] в локальной системе. Использует опции команды ls |
ln [старый путь] [новый путь] | Создайте симлинк с [старый путь] на [новый путь] на удаленном сервере |
lmkdir [путь] | Создайте каталог по адресу [path] в локальной системе |
lpwd | Отображение текущего локального каталог |
ls [опции] [путь] | Отображение листинга для каталога, расположенного по адресу [path] на удаленном сервере. Использует параметры команды ls. |
lumask [маска] | Установите маску локальных разрешений на [маска] |
mkdir [путь] | Создайте каталог по адресу [путь] на удаленном сервере |
put [локальный путь] [удаленный путь] | Передача файла или каталога из [локальный путь] на локальной системе в [удаленный путь] на удаленном сервере |
pwd | Отображение текущего удаленного каталога |
exit | Выход из интерфейса SFTP |
quit | Выход из интерфейса SFTP |
rename [старый путь] [новый путь] | Переименуйте файл на удаленном сервере со [старый путь] на [новый путь] |
rmdir [путь] | Удалите каталог, расположенный по адресу [путь] на удаленном сервере |
rm [путь] | Удалите файл, расположенный по адресу [путь] на удаленном сервере |
symlink [старый путь] [новый путь] | Создайте симлинк с [старый путь] на [новый путь] на удаленном сервере |
version | Отображение текущей версии SFTP |
![команда] | Выполните [команду] в локальной оболочке |
! | Временно перейдите в локальную оболочку |
? | Отображение текста справки |
Подключение к SFTP
При подключении к SFTP используется тот же синтаксис, что и при подключении к удаленной системе с помощью SSH:
1 | sftp [имя пользователя]@[имя удаленного хоста или IP-адрес] |
Например, подключение к серверу с именем пользователя user на IP-адресе 192.168.1.99:
1 | sftp user@192.168.1.99 |
Если соединение успешно, оболочка переходит к интерфейсу SFTP, на который указывает sftp> вместо текущего имени пользователя
При подключении к удаленной системе с помощью SFTP используйте следующие опции команды sftp, чтобы изменить ее поведение:
Опция | Описание |
-1 | При подключении используйте версию 1 протокола SSH. |
-4 | Используйте только адреса IPv4. |
-6 | Использовать только адреса IPv6. |
-A | Позволяет перенаправить агент аутентификации SSH на удаленный сервер. |
-a | Попытка продолжить прерванную передачу файлов. |
-B [размер буфера] | Задать пользовательский размер буфера (значение по умолчанию - 32 768 байт). |
-b [пакетный файл] | Указать пакетный файл для запуска команды sftp в пакетном режиме. |
-C | Использовать сжатие файлов. |
-c [шифр] | Выберите шифр, который будет использоваться при шифровании данных для передачи. |
-D [путь к SFTP-серверу] | Подключиться к локальному SFTP-серверу без использования SSH. |
-F [файл конфигурации SSH] | Укажите конфигурационный файл SSH, который будет использоваться при подключении. |
-f | Смывать файлы на диск сразу после передачи. |
-i [файл закрытого ключа] | Выберите файл, содержащий закрытый ключ для аутентификации с открытым ключом. |
-J [место назначения] | Настройте переадресацию TCP через указанное место назначения. |
-l [кбит/с] | Установить ограничение на пропускную способность соединения в кбит/с. |
-N | Отключить тихий режим. |
-o [опция SSH] | Добавить опцию команды ssh при подключении к SFTP. |
-P [номер порта] | Задать порт для подключения. |
-p | Сохранять разрешения файлов и время доступа при передаче. |
-q | Включить тихий режим. |
-R [количество запросов] | Установить количество разрешенных одновременных запросов на передачу файлов. |
-r | Передавать каталоги рекурсивно. |
-S [клиент] | Укажите SFTP-клиент, который вы хотите использовать для подключения. |
-s [путь к SSH-подсистеме или SFTP-серверу] | Выбрать подсистему SSH2 или путь к SFTP-серверу. |
-v | Вести подробный журнал сеанса. |
Используйте команду exit для завершения текущего соединения:
1 | exit |
Передача файлов
Используйте команды get и put для создания запроса на передачу файлов в SFTP. Команда get переносит файлы с удаленного сервера на локальную систему, а команда put делает обратное.
Команда get использует следующий основной синтаксис:
1 | get [путь к файлу] |
С помощью команды get файл передается с удаленного сервера в каталог Home локальной системы. Например:
1 | get example.txt |
Передача файла с удаленного сервера в локальную систему с помощью команды SFTP get
С другой стороны, команда put передает файл с локальной системы в домашний каталог удаленного сервера:
1 | put example.txt |
Чтобы передать файл в другой каталог, добавьте имя каталога в конец команды get или put:
1 2 | get [путь к файлу] [путь к каталогу] put [путь к файлу] [путь к каталогу] |
Чтобы изменить имя файла в локальной системе, добавьте новое имя файла в конец команды:
1 2 | get [путь к файлу] [новое имя файла] put [путь к файлу] [новое имя файла] |
Команды get и put используют следующие параметры:
Опция | Описание |
-a | Попытка возобновить передачу файла. |
-f | Сразу же после передачи сбрасывайте файл на диск. |
-p | Сохранять разрешения и время доступа к файлу при передаче. |
-R | Передавать весь каталог рекурсивно. При использовании этой опции задайте путь к каталогу вместо пути к файлу. |
Изменение разрешений файлов
SFTP также позволяет изменять разрешения на файлы и каталоги на удаленном сервере. Команда chown изменяет права собственности на файл для отдельных пользователей:
1 | chown [ID пользователя] [путь к файлу] |
В отличие от команды chown, которая требует указания идентификатора пользователя, команда chmod работает так же, как и в стандартной оболочке:
1 | chmod [разрешение] [путь к файлу] |
Другой вариант - использовать команду chgrp для изменения группового права собственности на файл:
1 | chgrp [идентификатор группы] [путь к файлу] |
SFTP также позволяет установить локальный umask, изменяющий разрешение по умолчанию для всех будущих файлов, передаваемых в локальную систему. Используйте команду lumask, чтобы установить новый локальный umask:
1 | lumask [маска разрешения] |
Управление файлами и каталогами
SFTP предоставляет опции, которые позволяют пользователям просматривать и управлять файлами как на локальной системе, так и на удаленном сервере. Команда ls позволяет вывести список файлов и каталогов на удаленном сервере. Например:
1 | ls -l |
Аналогично, команда lls (local ls) выводит список файлов и каталогов на локальной системе:
1 | lls -l |
Команда ls, и команда lls в SFTP используют стандартные опции команды ls.
Команды cd и lcd изменяют текущий рабочий каталог на удаленном сервере или локальной системе, соответственно:
1 2 | cd [путь к каталогу на удаленном сервере] lcd [путь к каталогу на локальной системе] |
Команда mkdir создает на удаленном сервере каталог с указанным вами путем:
1 | mkdir [путь к новому каталогу на удаленном сервере] |
Например, создаем каталог Example в каталоге Home:
1 | mkdir Example |
Команда mkdir не имеет вывода, поэтому для проверки результата нужно использовать команду ls.
Аналогично, команда lmkdir создает каталог в локальной системе:
1 | lmkdir [путь к новому каталогу в локальной системе]. |
Используя тот же пример:
1 | lmkdir Example |
Команда rename изменяет имя файла или каталога на удаленном сервере:
1 | rename [старый путь] [новый путь] |
Например, переименование example.txt в sample.txt:
1 | rename example.txt sample.txt |
С помощью команды rm файл удаляется с удаленного сервера:
1 | rm [путь к файлу] |
Например, удаление файла sample.txt:
1 | rm sample.txt |
Аналогично, команда rmdir удаляет каталог с удаленного сервера:
1 | rmdir [путь к каталогу] |
Например, удаляем каталог Example:
1 | rmdir Example |
Команды ln и symlink создают символическую ссылку на файл или каталог на удаленном сервере:
1 2 | ln [старый путь] [новый путь] symlink [старый путь] [новый путь] |
Например, создание ссылки на файл example.txt с именем example_link с помощью команды ln:
1 | ln example.txt example_link |
Команда pwd показывает на выходе текущий рабочий каталог на удаленном сервере:
1 | pwd |
С другой стороны, команда lpwd создает вывод, показывающий текущий рабочий каталог на локальной системе:
1 | lpwd |
Выполнение команд локальной оболочки
SFTP позволяет выполнить команду с помощью локальной оболочки, добавив восклицательный знак (!) перед командой. Это позволяет пользователям выполнять команды, которые не являются частью стандартной оболочки SFTP в локальной системе.
Например, SFTP не поддерживает команду tree в Linux. Используя локальную оболочку, вы можете выполнить эту команду в интерфейсе SFTP:
1 | !tree |
Использование восклицательного знака (!) без команды временно переводит пользователя в локальную оболочку. Чтобы вернуться в оболочку SFTP, используйте команду exit.