Большинство людей предпочитают такие утилиты, как FileZilla, WinSCP или другие FTP-программы, когда им необходимо передавать файлы на серверы Linux или с них. SFTP — это безопасная альтернатива исходному протоколу FTP. Он выполняет в основном те же функции, что и его незащищенная версия, но с дополнительным уровнем шифрования. Для этого он использует протокол SSH, который предоставляет ему возможности шифрования. Настройка SFTP-сервера в вашей системе Linux включает в себя несколько шагов, которые мы демонстрируем здесь.
Читайте также: Как создать SSH-приманку для поимки хакеров на вашем Linux-сервере
Что такое SFTP?
SFTP (протокол безопасной передачи файлов) — сетевой протокол для передачи файлов от клиента на сервер. В отличие от FTP (протокол передачи файлов), SFTP использует протокол SSH (Secure Shell) для шифрования отправляемых данных. Он был разработан учеными-компьютерщиками Тату Юлененом и Сами Лехтиненом, которые также ответственны за разработку протокола SSH в 1990-х годах. Однако современная версия разработана IETF (Интернет-инженерная группа).
Его можно назвать проток
Contents
Что такое SFTP?
системы, хотя его название предполагает, что он выполняет только операции передачи файлов. При отправке файла по SFTP от клиента на принимающий сервер данные шифруются перед отправкой по назначению. Если отправляемые данные перехвачены «посредником», третья сторона не сможет их легко расшифровать.Установка SSH и сервера OpenSSH
Мы начинаем процесс настройки SFTP-сервера с установки SSH и сервера OpenSSH.
В большинстве установок Linux уже установлен SSH по умолчанию, но если в вашей системе его нет, вы можете установить его с помощью команды apt
Advanced Packaging Tool:
sudo apt install ssh
После установки SSH вы можете проверить его версию, выполнив команду ssh
с флагом -V
:
ssh -V
/div>
Вы можете установить сервер OpenSSH в системах Debian и Ubuntu, например, с помощью команды apt
:
sudo apt install openssh-server
Вы можете сделать то же самое в Arch Linux, используя команду pacman
:
sudo pacman -S openssh
Читайте также: Как настроить и использовать SSH в Linux
Создание пользователей, групп и каталогов для SFTP
Распространенной рекомендацией является то, что разные службы Linux должны использовать своих собственных пользователей, груп
Установка SSH и сервера OpenSSH
группы для пользователей SFTP. Это достигается с помощью командыgroupadd
:
sudo groupadd sftp_group
Вы можете создать пользователя и добавить его в созданную группу, используя команду useradd
и ее флаг -g
, который используется для указания группы, к которой принадлежит пользователь. будет частью:
sudo useradd -g sftp_group sftp_user
После создания пользователя присвойте ему пароль с помощью команды passwd
:
sudo passwd sftp_user
Создайте каталог по умолчанию для вновь созданного пользователя:
sudo mkdir -p /data/sftp_user/uploaded_files
Используйте команду chown
, чтобы предоставить каталогу необходимые разрешения:
sudo chown -R root:sftp_group /data/sftp_user sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files
Настройка SSH-сервера
Следующим шагом по настройке SFTP-сервера является настройка SSH-сервера, который он будет использовать.
Отредактируйте файл «sshd_config», расположенный в «/etc/ssh/», чтобы пользователь использовал оболочку SFTP при п
Создание пользователей, групп и каталогов для SFTP
легко отредактировать файл, используя часто используемый Нано-редактор , который есть во многих установках Linux по умолчанию:sudo nano /etc/ssh/sshd_config
Найдите конец файла и добавьте следующее:
Match Group sftp_group ChrootDirectory /data/%u ForceCommand internal-sftp
Перезапустите службу SSH:
sudo systemctl restart sshd
Читайте также: Как показать все активные SSH-соединения в Linux
(Необязательно) Изменение порта SFTP
Если вы хотите изменить порт, который использует SFTP-сервер, со значения по умолчанию 22 на выбранный вами вариант, вам необходимо еще раз отредактировать файл «sshd_config».
Еще раз отредактируйте файл с помощью редактора Nano:
sudo nano /etc/ssh/sshd_config
Найдите в файле строку со значением порта по умолчанию 22, закомментированную:
#Port 22
Вы можете удалить знак решетки (#), используемый для закомментирования строки, и добавить значение порта по вашему выбору. В моем случае я меняю значение на 1111:
Port 1111
Теперь просто сохраните файл
и перезапустите сервер:
sudo systemctl restaНастройка SSH-сервера
g>Читайте также: 8 полезных и интересных команд BashВход и использование сервера
Сервер установлен и настроен, он готов к использованию. Вы можете легко загружать и скачивать файлы, используя зашифрованный сеанс, предоставляемый SSH.
Прежде чем войти в систему, не помешает просмотреть предоставленное руководство:
sftp -h
Войдите на сервер, указав имя пользователя и IP-адрес сервера или имя хоста в следующем формате:
sftp USER@HOST
Кроме того, вы можете указать порт, который использует ваш SFTP-сервер (по умолчанию — 22), используя флаг
-P
:sftp USER@HOST -P <PORT>При входе в систему вас приветствует оболочка SFTP.
Просмотрите руководство, набрав
help
.Загрузка файлов
Чтобы скачать файл:
get /path/to/file/on/serverПример:
get /bin/lsЭтот файл будет загружен в ваш текущий каталог — тот, в котором вы находились локально до входа на сервер. Чтобы загрузить в определенный локальный каталог:
get /path/to/file/on/server(Необязательно) Изменение порта SFTPlocal/folder Чтобы копировать каталоги, необходимо добавить в команду параметр
-r
, обозначающий рекурсию.get -r /bin /home/username/Desktop/binНе забудьте добавить имя для нового каталога, который вы хотите создать локально, например «/home/username/Desktop/bin» в данном случае. Если вы используете
get -r /bin /home/username/Desktop
, файлы будут копироваться прямо на рабочий стол. Обратите внимание: копируются файлы, а не сам каталог.Загрузка файлов
Загрузка файлов и каталогов осуществляется по тем же принципам. Единственным исключением является то, что пути меняются местами, то есть сначала вы указываете локальный файл/каталог, а затем удаленный путь.
Для начала загрузите файлы на сервер с помощью команды
put
:put /path/to/local/content /path/to/remote/locationПри загрузке каталогов (рекурсивной) помните, что применяется то же правило из предыдущего раздела: на самом деле копируются файлы в каталоге, а не сам каталог. Укажите новое имя каталога, в который вы хотите скопировать эти файлы.
put -r /home/username/Desktop/bin binПри этом на удаленной стороне создается новый каталог под названием «bin».
Возобновление передачи и использование путей, содержащих пробелы
Если передача большого файла прерывается, вы можете возобновить ее, заменив предыдущую команду на
reput<
Вход и использование сервера
едитесь, что вы используете те же пути, что и в прошлый раз, чтобы источник и место назначения точно совпадали.reget /path/to/file/on/server /path/to/local/file reput /path/to/local/file /path/to/file/on/serverЧтобы возобновить передачу каталогов, просто добавьте параметр
-r
:reput -r /home/username/Desktop/bin binЕсли путь к файлу содержит пробелы, заключите его в кавычки:
put "/home/username/My Documents/Files"Другое использование
Вы можете просмотреть файлы и каталоги с помощью команды
ls
:ls -lРазрешения файлов также можно изменить с помощью команды
chmod
:chmod <PERMISSION> <FILE>Кроме того, вы можете создать новый каталог с помощью команды mkdir:
mkdir <DIRECTORY_NAME>Читайте также: Загрузка файловзка файловash в фоновом режиме в Linux">Как запускать команды Bash в фоновом режиме в Linux
Часто задаваемые вопросы
1. Нужно ли мне устанавливать SFTP-клиент?
В большинстве случаев нет, поскольку большинство систем Linux поставляются с терминальным SFTP-клиентом, установленным по умолчанию.
2. Могу ли я использовать аутентификацию с открытым ключом?
Да, вы можете использовать аутентификацию с открытым ключом вместо пароля в качестве метода аутентификации. Его настроить довольно просто, и он обеспечивает дополнительную безопасность вашего сервера.
3. Могу ли я одновременно разместить SSH-сервер?
Да. Однако вам необходимо убедиться, что ваш SFTP-сервер не использует тот же порт, что и SSH-сервер .
Возобновление передачи и использование путей, содержащих пробелы
Другое использование
Часто задаваемые вопросы
1. Нужно ли мне устанавливать SFTP-клиент?
2. Могу ли я использовать аутентификацию с открытым ключом?
3. Могу ли я одновременно разместить SSH-сервер?