How to Upload or Download Files/Directories Using sFTP in Linux
sFTP (secure File Transfer Program) is a secure and interactive file transfer program, which works in a similar way as FTP (File Transfer Protocol). However, sFTP is more secure than FTP; it handles all operations over an encrypted SSH transport.
It can be configured to use several useful SSH features, such as public key authentication and compression. It connects and logs into the specified remote machine, and switches to an interactive command mode where user can execute various commands.
In this article, we will show you how to upload/download a whole directory (including it’s subdirectories and subfiles) using sFTP.
How to Use sFTP to Transfer Files/Directories in Linux
By default, SFTP adopts the same SSH transport for establishing a secure connection to a remote server. Although, passwords are used to authenticate users similar to the default SSH settings, but, it is recommended to create and use SSH passwordless login for simplified and more secure connection to remote hosts.
Connect to Remote FTP Server Securely
To connect to a remote sftp server, first establish an secure SSH connection and then create an SFTP session as shown.
Once you have logged into the remote host, you can run interactive sFTP commands as in the examples below:
Run sFTP Commands on Remote Linux
How to Upload a Directory Using sFTP
In order to upload a whole directory to a remote Linux host, use the put command. However, you will get an error if the directory name doesn’t exist in the working directory on the remote host as shown in the screenshot below.
Therefore, first create a directory with the same name on the remote host, before uploading it from the local host, the -r does the magic, enabling subdirectories and subfile to be copied as well:
Upload Directory using SFTP
To preserve the modification times, access times, and modes from the original files transferred, use the -p flag.
How to Download a Directory Using sFTP
To download a whole directory called fstools-0.0 from remote Linux host to local machine, use the get command with the -r flag as follows:
Download Directory using sFTP
Then check in the current working directory on the local host, if the directory was downloaded with all the contents in it.
To quite the sFTP shell, type:
Note that to prevent users from accessing the whole file system on the remote host, for security reasons, you can restrict sFTP users to their home directories using chroot Jail.
That’s it! In this article, we’ve showed you how to upload/download a whole directory using sFTP. Use the comment section below to offer us your thoughts about this article/topic.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Information Security Squad
stay tune stay secure
📃 Примеры команд SFTP на Linux с объяснениями
SFTP — протокол передачи файлов по SSH.
Он работает по протоколу ssh для безопасной передачи файлов между двумя удаленными системами.
На последних серверах OpenSSH по умолчанию настроен SFTP-сервер.
Вы также можете использовать эти учебники для настройки только пользователя sftp в вашей системе Linux без доступа SSH:
Подключиться к SFTP
Используйте утилиту командной строки sftp для подключения к удаленной системе sftp.
Вам нужны пользователь sftp и имя хоста или IP-адрес удаленного хоста.
Навигация и просмотр файлов
Навигация в каталогах по SFTP так же проста, как и в локальной системе.
Используйте команду «pwd» для проверки текущего рабочего каталога.
Затем с помощью команды «ls» выведите список всех файлов и каталогов в текущем каталоге.
Для перехода в другие каталоги используйте команду «cd», а затем каталог назначения.
Используйте «cd ..» для перехода в родительский каталог.
Загрузить файлы на SFTP
Теперь мне нужно загрузить несколько файлов в папку uploads.
Поэтому сначала перейдите в каталог назначения.
Используйте команду «put» для загрузки файла README.md из локальной системы в удаленный каталог sftp.
Вы также можете указать абсолютный путь к локальному файлу и удаленному каталогу без навигации по каталогам.
Скачать файлы c SFTP
Чтобы загрузить файлы c удаленного каталога sftp, используйте команду «get».
Например, чтобы загрузить REMOTE_FILE.md из удаленной системы в текущий локальный каталог.
Точно так же вы можете указать абсолютный путь для загрузки файлов.
Выход из SFTP
Просто напишите bye и попрощайтесь со своим удаленным SFTP-сервером.
Это отключит соединение SFTP и вернется к вашей локальной оболочке.
Кроме того, вы также можете использовать одну из следующих опций для выхода из сеанса SFTP.
Все эти 3 команды делают одну и ту же работу.
Добавить комментарий Отменить ответ
Онлайн курсы
Рубрики
- Аудит ИБ (36)
- Вакансии (9)
- Закрытие уязвимостей (97)
- Книги (25)
- Мануал (1 723)
- Медиа (65)
- Мероприятия (33)
- Мошенники (21)
- Обзоры (641)
- Обход запретов (30)
- Опросы (3)
- Скрипты (96)
- Статьи (255)
- Философия (27)
- Юмор (14)
Метки
Наш Telegram
Социальные сети
Hack shop
Поделиться
Anything in here will be replaced on browsers that support the canvas element
Как использовать SFTP для безопасного обмена файлами с удаленным сервером
Posted February 4, 2015
Что такое SFTP?
FTP (“File Transfer Protocol” — протокол передачи файлов) — это популярный способ передачи файлов между двумя удаленными системами.
SFTP (“SSH File Transfer Protocol” или “Secure File Transfer Protocol”) — это отдельный протокол с SSH, который работает аналогичным образом, но с использованием защищенного соединения. Его преимуществом является способность использовать защищенное соединение для передачи файлов и навигации по файловой системе на обеих системах — локальной и удаленной.
Почти во всех случаях, SFTP предпочтительнее FTP, из-за его встроенной поддержки шифрования. FTP — небезопасный протокол, который следует использовать лишь в ограниченных случаях или в сети, которой Вы доверяете.
Хотя SFTP встроен во многие приложения с графическим интерфейсом пользователя, в этом руководстве мы покажем, как использовать его с помощью интерактивного интерфейса командной строки.
Как установить соединение через SFTP
По умолчанию, SFTP использует протокол SSH для авторизации и установки безопасного соединения. По этой причине в SFTP доступны те же методы авторизации, которые существуют в SSH.
Хотя пароли просты в использовании и используются по умолчанию, мы рекомендуем создать SSH ключи и передать Ваш открытый ключ на все системы, куда Вам нужен доступ. Данный способ гораздо более безопасен и в дальнейшем сэкономит Вам время.
Пожалуйста, посмотрите руководство по настройке SSH-ключей для доступа к Вашему серверу, если Вы еще этого не делали.
Если Вы можете зайти на машину по SSH, значит Вы выполнили все необходимые действия для использования SFTP для передачи файлов. Протестируйте доступ по SSH при помощи следующей команды:
Если все работает, выйдите обратно при помощи команды:
Мы можем установить SSH-соединение и затем открыть SFTP-сессию через это соединение с помощью следующей команды:
Вы подключитесь к удаленной системе и подсказка командной строки изменится на соответствующую для SFTP.
Получение справки в SFTP
Самой полезной командой, которую стоит выучить первой, является команда help (помощь, справка). С её помощью Вы получите доступ к краткой справочной информации по SFTP. Вы можете вызвать её, используя любую из следующих команд:
В результате на экране будет отображён список доступных команд:
В следующих разделах мы расскажем подробнее о некоторых из этих командах.
Навигация с помощью SFTP
Мы можем перемещаться по файловой иерархии удаленной системы при помощи ряда команд, которые функционируют так же, как их аналоги в shell.
Для начала, давайте поймём, в какой директории мы находимся в удаленной системе. Как и в обычной shell-сессии мы можем выполнить следующую команду для определения текущей директории:
Мы можем посмотреть содержимое текущей директории удаленной системы при помощи другой знакомой команды:
Имейте ввиду, что команды в SFTP-интерфейсе не являются полноценными shell-командами и не так богаты опциями, но они имеют некоторые наиболее важные опциональные флаги:
Для смены директории мы можем использовать команду:
Теперь мы можем перемещаться по удаленной файловой системе, но что если нам необходим доступ к локальной файловой системе? Мы можем направить команды на локальную файловую систему путем добавления префикса “l”.
Все команды, которые мы рассмотрели, имеют локальные эквиваленты. Мы можем узнать текущую локальную директорию:
Мы можем вывести список содержимого текущей директории на локальной машине:
Мы также можем изменить директорию, с которой мы хотим работать на локальной системе:
Передача файлов через SFTP
Навигация в удаленной и локальной файловых системах малополезна без возможности передачи файлов между ними.
Передача удаленных файлов на локальную систему
Если мы хотим загрузить файлы с нашего удаленного хоста, мы можем сделать это следующей командой:
По умолчанию, команда “get” загружает удаленный файл на локальную файловую систему с таким же именем файла.
Мы можем скопировать удаленный файл на локальную систему с другим именем файла путем добавления имени в конце:
Команда “get” также имеет опциональные параметры. Например, мы можем скопировать директорию со всем ее содержимым путем добавления параметра рекурсии -r :
Мы может указать SFTP сохранить соответствующие привилегии и дату и время доступа путем добавления параметров “-P” или “-p”:
Передача локальных файлов на удаленную систему
Передача файлов на удаленную систему осуществляется так же легко при помощи команды с соответствующим названием “put”:
Такие же параметры, какие работают с “get”, есть и у “put”. Так что для копирования локальной директории целиком используйте:
Знакомая команда “df”, которая полезна при передаче файлов, работает аналогично с ее shell-версией. С ее помощью Вы можете проверить, достаточно ли места для передачи нужного Вам файла:
Обратите внимание, что для этой команды не существует локальной версии (с префиксом “l”), но эту проблему можно обойти при помощи команды “!”.
Команда “!” переводит нас в локальный shell, где мы можем выполнить любую команду, доступную в нашей локальной системе. Проверить статистику использование диска можно следующим образом:
Тем не менее, любая другая локальная команда будет работать. Для возврата к Вашей SFTP-сессии введите:
После этого подсказка командной строки изменится на соответствующую для SFTP.
Простые операции с файлами через SFTP
SFTP позволяет производить базовые операции с файлами, которые полезны при работе с иерархией файлов.
Например, Вы можете изменить владельца файла на удаленной системе следующим образом:
Обратите внимание, что, в отличие от системной команды “chmod”, SFTP-команда принимает в виде параметра не имя пользователя, а его идентификатор. К сожалению, не существует простого способа узнать идентификатор пользователя из SFTP-интерфейса.
Проблему можно обойти следующим образом:
Обратите внимание, как вместо самостоятельного использования команды “!”, мы использовали её в качестве префикса для локальной shell-команды. Данный способ работает для выполнеия любой команды, доступной на Вашей локальной машине, и может быть использован с локальной командой “df”, показанной ранее.
Идентификатор пользователя будет отображаться в третьем столбце файла (столбцы разделены двоеточием).
Аналогично мы можем изменить группу владельцев файла ( group owner ):
И опять, не существует простого способа получить список групп удаленной системы. Данную проблему можно обойти при помощи следующей команды:
Третий столбец содержит идентификатор группы, имя которой указано в первом столбце. Это как раз то, что мы ищем.
Команда “chmod” на удаленной файловой системе работает ожидаемым образом:
Команды для изменения прав доступа к локальным файлам нет, но Вы можете настроить локальную umask (маска режима создания пользовательских файлов) так, чтобы любые файлы, копируемые в локальную систему, будут иметь соответствующие права доступа.
Это может быть сделано при помощи команды “lumask”:
Теперь все загруженные файлы (без использования параметра “-p”) будут иметь права доступа 664.
SFTP позволяет Вам создавать директории на обоих системах, локальной и удаленной, при помощи команд “lmkdir” и “mkdir” соответственно. Они работают обычным образом.
Следующие команды работают только на удаленной файловой системе:
Эти команды копируют основное поведение соответствующих shell-версий. Если Вам необходимо выполнить их на локальной файловой системе, помните, что вы можете перейти в shell при помощи команды:
Или выполнить одну команду на локальной системе путем добавления “!” в качестве префикса следующим образом:
Когда Вы закончили работу с SFTP-сессией, используйте команды “exit” или “bye”, чтобы закрыть соединение.
Заключение
Несмотря на то, что SFTP — простой инструмент, он очень полезен для администрирования серверов и передачи файлов между ними.
Если Вы привыкли использовать FTP или SCP для передачи файлов, SFTP — хороший способ сочетать сильные стороны обоих. Хотя он подходит не для всех ситуаций, это гибкий инструмент, который полезно иметь на вооружении.