SFTP (протокол безопасной передачи файлов) включен вместе с SSH как безопасный способ передачи файлов между удаленными системами. Он также позволяет пользователям выполнять основные административные задачи на удаленных серверах, такие как управление файлами и каталогами и установка прав доступа к файлам.
Как подключиться с помощью SFTP
SFTP устанавливает безопасное соединение между системами с помощью сетевого протокола SSH. Это позволяет вам подключаться к любой системе, имеющей копию вашего открытого ключа SSH.
При подключении к другой системе с помощью SFTP используется тот же синтаксис команд, что и при подключении с помощью SSH. Команда требует указать имя пользователя и имя удаленного хоста или IP-адрес системы, к которой вы хотите получить доступ:
1 | sftp [имя пользователя]@[имя удаленного хоста или IP-адрес]. |
В примере ниже мы подключаемся к системе с IP-адресом 192.168.1.99, используя имя пользователя user:
1 | sftp user@192.168.1.99 |
Чтобы завершить текущее соединение, используйте:
1 | exit |
Как передавать файлы с помощью SFTP
Использование SFTP позволяет передавать файлы с удаленного сервера на локальную систему и наоборот.
передача удаленных файлов в локальную систему
Используйте команду get в интерфейсе SFTP для передачи файла с удаленного сервера в локальную систему:
1 | get [путь к файлу] |
Например, чтобы передать файл document.txt из каталога Home удаленной системы в локальную систему, используйте:
1 | get document.txt |
По умолчанию SFTP передает файлы в домашний каталог локальной системы. Чтобы передать файлы в другой каталог, добавьте путь к каталогу в конец команды get:
1 | get example_document.txt Downloads |
Чтобы изменить имя файла в локальной системе, добавьте новое имя файла в конец команды get.
1 | get document.txt sample.txt |
В приведенном выше примере команда get получает файл document.txt и сохраняет его в локальной системе под именем sample.txt.
SFTP также позволяет передавать весь каталог с удаленной системы с помощью флага -r, указывающего на рекурсивную передачу всех файлов в каталоге:
1 | get -r Directory |
Добавьте флаг -P к команде get, чтобы передать файл или каталог с сохранением разрешений и времени доступа:
1 | get -Pr Directory |
Используйте команду ls для проверки передачи данных в локальную систему:
1 | ls -l |
Передача локальных файлов на удаленный сервер
Чтобы передать файлы с локальной системы на удаленный сервер, используйте команду put. Команда put использует тот же синтаксис и опции, что и команда get.
1 | put [путь к файлу] |
Например, чтобы передать файл example.txt на удаленный сервер, используйте:
1 | put example.txt |
Чтобы передать файл в определенный каталог на удаленном сервере, добавьте путь к каталогу в конец команды put.
1 | put example.txt Directory |
Добавление нового имени файла в конец команды put изменяет имя передаваемого файла на удаленном сервере.
1 | put example.txt sample.txt |
Перенос файла с локальной системы на удаленный сервер и изменение имени файла
Для переноса целого каталога требуется флаг -r.
1 | put -r Directory |
Добавьте флаг -P к команде put, чтобы сохранить права доступа к файлам:
1 | put -Pr Directory |
Обслуживание файлов с помощью SFTP
SFTP поддерживает базовое обслуживание файлов. Например, используйте SFTP для изменения прав доступа к файлам и каталогам на удаленной системе.
Команда chown изменяет права владения файлом аналогично команде chmod:
1 | chown [идентификатор пользователя] [путь к файлу] |
В отличие от команды chmod, chown принимает только идентификаторы пользователей, а не имена пользователей. Поиск UID для удаленного сервера с помощью интерфейса SFTP требует передачи и доступа к файлу /etc/passwd:
1 2 | get /etc/passwd !less passwd |
Команда chmod работает так же, как и в стандартной оболочке:
1 | chmod [разрешение] [путь к файлу] |
Другой вариант - изменить права собственности на файл группы с помощью команды chgrp:
1 | chgrp [ID группы] [путь к файлу]. |
Как и в случае с UID, идентификаторы групп находятся в третьей колонке файла /etc/group на удаленном сервере:
1 2 | get /etc/group !less group |
SFTP позволяет установить локальный umask, который изменяет стандартное разрешение на файлы, передаваемые в локальную систему.
Другой способ изменения локальных разрешений файлов - использовать SFTP для воспроизведения поведения команд команд оболочки. Для этого добавьте восклицательный знак (!) перед именем команды.
Например, используя команду chmod в локальной системе:
1 | !chmod [разрешение] [путь к файлу] |