Введение
SFTP (протокол передачи файлов SSH) — это безопасный файловый протокол, используемый для доступа, управления и передачи файлов по зашифрованному транспорту SSH.
По сравнению с традиционным протоколом FTP, SFTP предлагает все функции FTP и его проще настроить.
В отличие от команды scp command
, которая разрешает только передачу файлов, команда sftp
позволяет выполнять различные удаленные операции с файлами и возобновлять передачу файлов.
В этом уроке мы покажем вам, как использовать команду Linux sftp
.
Предпосылки
Чтобы иметь возможность передавать файлы и управлять ими через SFTP, у вас должно быть разрешение на запись в удаленной системе.
При передаче больших файлов рекомендуется запускать команду sftp в сеансе screen или tmux.
Каталог, из которого вы запускаете команду sftp
, является локальным рабочим каталогом.
Установить SFTP-соединение
SFTP работает по модели клиент-сервер. Это подсистема SSH, поддерживающая все механизмы аутентификации SSH.
Хотя традиционная аутентификация по паролю установлена по умолчанию и проще в использовании, если вы регулярно подключаетесь к своему серверу через SSH/SFTP, рекомендуется создать SSH-ключи и настроить SFTP-вход без пароля.
Чтобы открыть SFTP-соединение с удаленной системой, используйте команду sftp
, за которой следует имя пользователя и IP-адрес удаленного сервера или имя домена:
sftp remote_username@server_ip_or_hostname
Если вы подключаетесь к хосту с использованием аутентификации по паролю, вам будет предложено ввести пароль пользователя.
После подключения вы увидите приглашение sftp
и сможете начать взаимодействие с удаленным компьютером:
Connected to remote_username@server_ip_or_hostname.
sftp>
Если удаленный SSH-сервер не прослушивает порт 22 по умолчанию, используйте параметр -oPort
, чтобы указать альтернативный порт:
sftp -oPort=custom_port remote_username@server_ip_or_hostname
SFTP-команды
Большинство команд SFTP аналогичны или идентичны командам, которые вы используете в командной строке Linux.
Вы можете получить список всех доступных команд SFTP, набрав help
или ?
.
help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'......
version Show SFTP version!command Execute 'command' in local shell! Escape to local shell
? Synonym for help
Просмотр с помощью SFTP
При входе на удаленный сервер текущим рабочим каталогом является домашний каталог удаленного пользователя. Вы можете убедиться в этом, набрав:
pwd
Remote working directory: /home/remote_username
Чтобы получить список файлов и каталогов, используйте команду ls
:
ls
Чтобы перейти в другой каталог, используйте команду cd
. Например, для перехода в каталог /tmp
введите:
cd /tmp
Вышеупомянутые команды используются для навигации и работы в удаленном месте.
Оболочка sftp
также предоставляет команды для локального просмотра, информации и управления файлами. Локальным командам предшествует буква l
.
Например, чтобы распечатать локальный рабочий каталог, введите:
cd lpwd
Local working directory: /home/local_username
Передача файлов по SFTP
С помощью SFTP вы можете безопасно передавать файлы между двумя компьютерами.
Если вы работаете на настольном компьютере, вы можете использовать SFTP-клиент с графическим интерфейсом, такой как WinSCP или FileZilla, для подключения к удаленному серверу и загрузки или выгрузки файлов.
Команда sftp
полезна, когда вы работаете на сервере без графического интерфейса и хотите передавать файлы или выполнять другие операции с удаленными файлами.
Загрузка файлов с помощью команды SFTP
После входа на удаленный сервер текущим рабочим каталогом является домашний каталог удаленного пользователя.
Когда вы загружаете файлы с помощью команды sftp
, файлы загружаются в каталог, из которого была введена команда sftp
.
Чтобы загрузить один файл с удаленного сервера, используйте команду get
:
get filename.zip
Вывод должен выглядеть так:
Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13
Если вы хотите сохранить загруженный файл под другим именем, укажите новое имя в качестве второго аргумента:
get filename.zip local_filename.zip
Чтобы загрузить каталог из удаленной системы, используйте рекурсивную опцию -r
:
get -r remote_directory
Если передача файла не удалась или была прервана, ее можно возобновить с помощью команды reget
.
Синтаксис reget
такой же, как синтаксис get
:
reget filename.zip
Загружать файлы с помощью команды SFTP
Чтобы загрузить файл с локального компьютера на удаленный SFTP-сервер, используйте команду put
:
put filename.zip
Вывод должен выглядеть так:
Uploading filename.zip to /home/remote_username/filename.zip
filename.zip 100% 12MB 1.7MB/s 00:06
Если файл, который вы хотите загрузить, находится не в текущем рабочем каталоге, используйте абсолютный путь к файлу.
При работе с put
вы можете использовать те же параметры, что и с командой get
.
Чтобы загрузить локальный каталог, введите:
put -r locale_directory
Чтобы возобновить прерванную загрузку:
reput filename.zip
Манипуляции с файлами с помощью SFTP
Как правило, для выполнения задач на удаленном сервере вы подключаетесь к нему через SSH и выполняете свою работу с помощью терминала оболочки. Однако в некоторых ситуациях пользователь может иметь доступ только к удаленному серверу по протоколу SFTP.
SFTP позволяет запускать некоторые основные команды для работы с файлами. Вот несколько примеров использования оболочки SFTP:
Получить информацию об использовании удаленного системного диска:
df
Size Used Avail (root) %Capacity
20616252 1548776 18002580 19067476 7%
Создайте новый каталог на удаленном сервере:
mkdir directory_name
Переименуйте файл на удаленном сервере:
rename file_name new_file_name
Удалить файл на удаленном сервере:
rm file_name
Удалить каталог на удаленном сервере:
rmdir directory_name
Измените права доступа к файлу в удаленной системе:
chmod 644 file_name
Измените владельца файла в удаленной системе:
chown user_id file_name
Вам необходимо указать идентификатор пользователя для команд chown
и chgrp
.
Измените владельца группы удаленного файла с помощью:
chgrp group_id file_name
Когда закончите, закройте соединение, набрав bye
или quit
.
Вывод
В этом руководстве мы показали вам, как использовать команду sftp
для загрузки и загрузки файлов на удаленный SFTP-сервер.