SFTP (протокол безопасной передачи файлов) включен вместе с SSH как безопасный способ передачи файлов между удаленными системами. Он также позволяет пользователям выполнять основные административные задачи на удаленных серверах, такие как управление файлами и каталогами и установка прав доступа к файлам.
В этом руководстве мы покажем вам, как использовать SFTP для передачи файлов между локальной и удаленной системой с помощью интерфейса терминала.
- Доступ к локальной системе и удаленному серверу, подключенным с помощью пары открытых ключей SSH.
- Работающее подключение к Интернету.
- Доступ к окну терминала.
Как подключиться с помощью SFTP
SFTP устанавливает безопасное соединение между системами с помощью сетевого протокола SSH. Это позволяет вам подключаться к любой системе, у которой есть копия вашего публичного SSH-ключа.
Для подключения к другой системе с помощью SFTP используется тот же синтаксис команд, что и для подключения с использованием SSH. Команда требует, чтобы вы указали имя пользователя и удаленное имя хоста или IP-адрес для системы, к которой вы хотите получить доступ:
sftp [username]@[remote hostname or IP address]
В приведенном ниже примере мы подключаемся к системе с IP-адресом 192.168.100.5, используя имя пользователя phoenixnap:
sftp phoenixnap@192.168.100.5
Чтобы завершить текущее соединение, используйте:
exit
Как передавать файлы с помощью SFTP
Использование SFTP позволяет передавать файлы с удаленного сервера в локальную систему и наоборот.
Перенос удаленных файлов в локальную систему
Используйте get
команду в интерфейсе SFTP для передачи файла с удаленного сервера в вашу локальную систему:
get [path to file]
Например, чтобы передать файл с именем example_document.txt из домашнего каталога удаленной системы в локальную, используйте:
get example_document.txt
По умолчанию SFTP передает файлы в домашний каталог локальной системы. Чтобы перенести файлы в другой каталог, добавьте путь к каталогу в конце get
команды:
get example_document.txt Downloads
Чтобы изменить имя файла в локальной системе, добавьте новое имя файла в конец get
команды.
get example_document.txt sample01.txt
В приведенном выше примере get
команда извлекает файл example_document.txt и сохраняет его как sample01.txt в локальной системе.
SFTP также позволяет передавать весь каталог из удаленной системы с помощью -r
флага, указывающего на рекурсивную передачу всех файлов в каталоге:
get -r Example_Directory
Добавьте -P
флаг в get
команду для передачи файла или каталога с сохранением разрешений и времени доступа:
get -Pr Example_Directory
Используйте ls
команду для проверки передачи в локальную систему:
ls -l
Перенос локальных файлов на удаленный сервер
Чтобы передать файлы из локальной системы на удаленный сервер, используйте put
команду. Команда put
использует тот же синтаксис и параметры, что и get
команда.
put [path to file]
Например, чтобы передать файл example01.txt на удаленный сервер, используйте:
put example01.txt
Чтобы передать файл в определенный каталог на удаленном сервере, добавьте путь к этому каталогу в конец put
команды.
put example01.txt Example_Directory
Добавление нового имени файла в конец put
команды изменяет имя переданного файла на удаленном сервере.
put example01.txt text_sample.txt
Для переноса всего каталога требуется -r
флаг.
put -r Test_Directory
Добавьте к команде -P
флаг put
для сохранения прав доступа к файлам:
put -Pr Test_Directory
Проверьте передачу файла с помощью ls
команды в удаленной системе:
Обслуживание файлов с использованием SFTP
SFTP поддерживает базовое обслуживание файлов. Например, используйте SFTP для изменения прав доступа к файлам и каталогам в удаленной системе.
Команда chown
меняет владельца файла аналогично команде chmod:
chown [user ID] [path to file]
В отличие от chmod
команды, chown
принимает только идентификаторы пользователей, а не имена пользователей. Чтобы найти UID для удаленного сервера с помощью интерфейса SFTP, необходимо передать файл /etc/passwd и получить к нему доступ:
get /etc/passwd
!less passwd
UID для каждого пользователя можно найти в третьем столбце, разделенном двоеточиями:
Команда chmod
работает так же, как в стандартной оболочке:
chmod [permission] [path to file]
Другой вариант — изменить владельца файла группы с помощью chgrp
команды:
chgrp [group ID] [path to file]
Как и в случае с UID, идентификаторы групп находятся в третьем столбце файла / etc/group на удаленном сервере:
get /etc/group
!less group
SFTP позволяет вам установить локальную маску, которая изменяет права доступа к файлам по умолчанию для файлов, передаваемых в локальную систему.
Например:
lumask 022
Приведенная выше команда изменяет локальную umask на 022. Каждый файл, переданный после того, как вы установили эту маску, теперь по умолчанию имеет разрешение 644. Вы по-прежнему можете сохранить исходное разрешение, используя -p
флаг.
Другой способ изменить права доступа к локальному файлу — использовать SFTP для репликации поведения команд оболочки. Для этого перед названием команды добавьте восклицательный знак (!).
Например, используя chmod
команду в локальной системе:
!chmod [permission] [path to file]
Заключение
После прочтения этого руководства вы сможете использовать SFTP для передачи файлов и каталогов между удаленными системами.