Протокол передачи файлов File Transfer Protocol (FTP) когда-то был широко распространенным методом удаленной передачи файлов или данных. Однако он передает информацию в незашифрованном виде, что делает его небезопасным способом связи.
Как мы все знаем, FTP небезопасен, поскольку все передачи происходят открытым текстом, а это значит, что любой, кто прослушивает сетевые пакеты, может легко прочитать данные.
Поэтому FTP следует использовать только в ограниченных случаях или в сетях, которым вы полностью доверяете. Со временем такие протоколы, как SCP (Secure Copy) и SSH (Secure Shell), решили эти проблемы безопасности, внедрив зашифрованные уровни для безопасной передачи данных между удаленными системами.
Что такое sFTP?
sFTP (Secure File Transfer Protocol) – это часть набора протоколов SSH, которая по умолчанию работает через протокол SSH на стандартном порту 22 для установления безопасного соединения. SFTP был интегрирован во многие инструменты с графическим интерфейсом, такие как FileZilla, WinSCP и FireFTP.
Вы можете получить доступ к sFTP из терминала Linux с помощью команды sftp, которая часто предустановлена в большинстве дистрибутивов Linux.
which sftp
Если вы получите путь, похожий на /usr/bin/sftp, то все готово.
Предупреждение о безопасности: Пожалуйста, не открывайте порт SSH (Secure Shell) для публичного доступа в Интернет, так как это представляет угрозу безопасности. Вместо этого разрешите доступ только с определенных IP-адресов, которые будут использоваться для передачи или управления файлами на удаленной системе.
В этой статье мы рассмотрим примеры реальных команд sFTP, от входа в систему и навигации по каталогам до загрузки и скачивания файлов. В статье также рассматриваются пакетные передачи, сценарии и советы по автоматизации с помощью sFTP.
1. Как подключиться к SFTP
По умолчанию для аутентификации и установления SFTP-соединения используется тот же протокол SSH. Чтобы начать сеанс SFTP, введите в командной строке имя пользователя и имя или IP-адрес удаленного хоста.
После успешной аутентификации вы увидите оболочку с приглашением sftp>.
sftp ravi@192.168.122.217
Если SSH работает на измененом порту (например, 2222), используйте:
sftp -oPort=2222 ravi@192.168.122.217
После того как вы окажетесь в окне sftp prompt, проверьте доступные команды, набрав ? или help в командной строке.
sftp> ?
2. Проверка текущего рабочего каталога
Когда вы подключены к удаленному серверу через sFTP, важно знать, где вы находитесь – как локально (на вашей машине), так и удаленно (на сервере). sFTP предоставляет две простые команды для этой цели: lpwd и pwd.
Команда lpwd (локальная печать рабочего каталога) используется для отображения текущего локального каталога на вашей машине, с которой вы работаете. С другой стороны, команда pwd (print working directory) показывает ваш текущий каталог на удаленном сервере.
Вот как они выглядят в активной SFTP-сессии:
sftp> lpwd Local working directory: / sftp> pwd Remote working directory: /tecmint/
lpwdпомогает проверить, куда будут загружены файлы.pwdпомогает проверить, откуда будут загружены файлы.
Понимание этих команд особенно полезно при навигации по нескольким каталогам во время передачи файлов.
3. Листинг файлов с помощью sFTP
После подключения к удаленному серверу с помощью sFTP вам часто придется просматривать каталоги, чтобы проверить, какие файлы доступны на удаленной системе и на вашей локальной машине.
Чтобы просмотреть список файлов на удаленном сервере, просто воспользуйтесь командой ls, которая покажет содержимое текущего каталога на удаленном хосте.
sftp> ls
Если вы хотите увидеть подробную информацию о файле, такую как размер и разрешения, вы также можете использовать опцию -l:
sftp> ls -l
Если вы хотите просмотреть список файлов на вашей локальной системе (машине, с которой вы запускаете sFTP), используйте команду lls, которая ведет себя как обычная команда ls, но показывает содержимое вашего локального каталога.
sftp> lls
Вы также можете передать опции в lls, чтобы вывести список файлов в длинном формате:
sftp> lls -l
Совместное использование ls и lls помогает эффективно управлять файлами между локальной и удаленной системами в интерфейсе sFTP.
4. Загрузка файла с помощью SFTP
После подключения к удаленному серверу с помощью команды sftp вы можете использовать команду put для загрузки файла. Например, допустим, у вас есть файл local.profile на локальной машине, и вы хотите перенести его на удаленный сервер.
put local.profile
При выполнении этой команды sFTP загрузит файл из текущего локального каталога в текущий каталог на удаленном сервере.
Вы должны увидеть вывод, похожий на:
Uploading local.profile to /home/username/local.profile
Если вы хотите загрузить несколько файлов одновременно, вы можете использовать символы подстановки в команде mput. Например, чтобы загрузить все .txt файлов из текущего локального каталога:
mput *.txt
Совет: Перед загрузкой всегда полезно проверить и установить локальный и удаленный рабочие каталоги с помощью команд lcd и cd соответственно.
Например:
lcd /home/user/documents cd /var/www/html put index.html
5. Загрузка файлов с помощью sFTP
Чтобы загрузить один файл с удаленной системы в текущий локальный каталог, используйте команду get, за которой следует имя файла.
sftp> get SettlementReport_1-10th.xls
Если вы хотите загрузить сразу несколько файлов, используйте команду mget, которая особенно полезна, когда вы имеете дело с большим количеством отчетов, журналов или файлов данных:
sftp> mget *.xls
Команда mget использует шаблоны с подстановочными знаками, например *.xls, чтобы взять все файлы с расширением .xls из удаленного каталога и скопировать их в локальный рабочий каталог.
6. Переименование файлов при загрузке с помощью sFTP
По умолчанию команда get загружает файл, используя его оригинальное имя. Однако если вы хотите сохранить файл под другим именем локально, вы можете указать второй аргумент с нужным именем.
sftp> get SettlementReport_1-10th.xls Report_Jan.xls
В этом случае удаленный файл SettlementReport_1-10th.xls будет загружен и сохранен локально под именем Report_Jan.xls.
7. Переключение каталогов в sFTP
Чтобы изменить удаленный каталог (каталог на сервере, к которому вы подключены), используйте команду cd, за которой следует нужный путь.
sftp> cd test
Вы можете проверить свое текущее местоположение на удаленной системе, выполнив команду:
sftp> pwd
Аналогично, чтобы переключиться на другой локальный каталог (файловая система вашей текущей машины), используйте команду lcd:
sftp> lcd Documents
Чтобы подтвердить смену локального каталога, можно выполнить команду:
sftp> lpwd
8. Создание каталогов с помощью sFTP
Чтобы создать новый каталог на удаленном сервере, вы можете использовать команду mkdir из приглашения sFTP:
mkdir test
Эта команда создает каталог с именем test в текущем рабочем каталоге на удаленном сервере. Затем вы можете загружать файлы в эту директорию с помощью команды put или изменять их с помощью команды cd.
С другой стороны, если вы хотите создать каталог на локальной машине, находясь в сеансе sFTP, используйте команду lmkdir:
lmkdir Documents
Это создаст каталог с именем Documents в вашем текущем локальном рабочем каталоге. Ее можно использовать перед загрузкой нескольких файлов в специальную папку с помощью команды mget.
9. Удаление каталогов с помощью sFTP
Чтобы удалить файл, используйте команду rm в приглашении sFTP. Например, если вы хотите удалить файл с именем Report.xls из текущей удаленной директории, выполните команду:
rm Report.xls
Чтобы удалить каталог, используйте команду rmdir.
rmdir sub1
Важное замечание: sFTP может удалять только пустые каталоги. Если каталог содержит файлы или подкаталоги, вам придется сначала удалить их содержимое с помощью команды rm или удалить их рекурсивно с помощью других инструментов, таких как SSH или Rsync.
Поэтому перед удалением каталога убедитесь, что он пуст. В противном случае команда rmdir завершится с ошибкой, например:
rmdir failed: Directory not empty
Использование sFTP с ключами SSH (без запроса пароля)
Если вы хотите избежать ввода пароля при каждом подключении через sFTP, вы можете настроить аутентификацию на основе ключей SSH, используя пару ключей SSH на локальной машине.
ssh-keygen -t rsa -b 4096
Вы можете просто нажать Enter, чтобы принять расположение файла по умолчанию (~/.ssh/id_rsa) и по желанию задать кодовую фразу, в результате чего будут созданы два файла: закрытый ключ (id_rsa) и открытый ключ (id_rsa.pub).
Затем скопируйте открытый ключ на удаленный сервер, используя:
ssh-copy-id user@remote_host
После этого вы сможете подключиться к серверу с помощью sFTP без ввода пароля:
sftp user@remote_host
10. Выйдите из оболочки sFTP Shell
Чтобы выйти из оболочки sFTP и завершить сеанс связи с удаленным сервером, достаточно набрать:
bye Or exit
Но есть и еще один полезный прием, который вам следует знать.
Если вы находитесь внутри сеанса sFTP и вам нужно временно перейти в локальную оболочку Linux, не отключаясь от удаленного сеанса sFTP, вы можете использовать команду !, которая позволяет запускать локальные команды Linux непосредственно из среды sFTP.
sftp> !
Теперь вы можете выполнить любую обычную команду Linux.
ls -l
Когда вы закончите работу с локальной оболочкой и захотите вернуться к приглашению sFTP, просто введите:
exit
После выполнения команды exit вы вернетесь в сеанс sFTP, как показано на рисунке:
exit Shell exited with status 1 sftp>
Наконец, когда вы будете готовы полностью покинуть сеанс sFTP, выполните команду:
sftp> bye
Заключение
SFTP – это очень полезный инструмент для администрирования серверов и передачи файлов на и с (локальных и удаленных). Мы надеемся, что эти примеры помогут вам в некоторой степени понять использование SFTP.
Комментарии (0)