Enable sftp on linux

Как установить и использовать SFTP на серверах Linux

SFTP или SSH File Transfer Protocol — это метод безопасной передачи данных между двумя и более компьютерами. Его FTP работает поверх протокола SSH, использует его безопасность и полностью поддерживает аутентификацию.

В настоящее время рекомендуется использовать SFTP вместо устаревшего старого протокола FTP или FTP/S. SFTP по умолчанию безопасен, потому что так работает SSH. С точки зрения безопасности SFTP также защищает вас от перехвата пароля и атаки «человек посередине» (MiTM).

Как и SSH, SFTP также защищает целостность ваших данных с помощью шифрования и криптографической хеш-функции. Кроме того, он поддерживает несколько безопасных методов аутентификации, включая аутентификацию на основе пароля и ключа. Кроме того, он уменьшает открытый порт сервера для внешней сети, потому что он работает на том же порту, что и протокол SSH.

Предпосылки

В этом руководстве вы узнаете, как настроить SFTP-сервер в системе Linux. Кроме того, вы узнаете основные команды клиента sftp.

Ниже приведена текущая среда для реализации:

  • Сервер Linux — вы можете использовать Debian, Ubuntu, CentOS, Fedora, Rocky или любой другой дистрибутив Linux.
  • Убедитесь, что пакеты OpenSSH доступны в вашей системе Linux.
  • Клиент SFTP — командная строка sftp или любой клиент с графическим интерфейсом по вашему выбору.

Проверка пакетов OpenSSH

Чтобы настроить SFTP-сервер, в вашей системе Linux должны быть установлены пакеты OpenSSH. Почти на всех серверах дистрибутивов Linux по умолчанию установлены пакеты OpenSSH. Но если в вашей системе нет пакета OpenSSH, вы можете установить его из официального репозитория.

1. Чтобы убедиться, что пакеты OpenSSH установлены в вашей системе Linux, используйте следующую команду.

Для серверов Debian или Ubuntu вы можете использовать приведенную ниже команду dpkg.

Ниже приведен вывод нашей системы Debian.

ii libssh2-1:amd64 1.9.0-2 amd64 SSH2 client-side library
ii openssh-client 1:8.4p1-5 amd64 secure shell (SSH) client, for secure access to remote machines
ii openssh-server 1:8.4p1-5 amd64 secure shell (SSH) server, for secure access from remote machines
ii openssh-sftp-server 1:8.4p1-5 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines

Первый столбец ii означает, что пакет установлен. Пакет openssh-sftp-server установлен в системе Debian/Ubuntu.

Читайте также:  Linux install touchpad driver

Для пользователей RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux вы можете использовать команду rpm, как показано ниже.

Создать группу и пользователя

На этом этапе вы создадите новую группу и пользователя для SFTP-сервера. Пользователям в этой группе будет разрешен доступ к SFTP-серверу. А по соображениям безопасности пользователи SFTP не могут получить доступ к службе SSH. Пользователи SFTP получают доступ только к серверу SFTP.

1. Выполните следующую команду, чтобы создать новую группу sftpgroup.

2. Создайте нового пользователя sftpuser с помощью следующей команды.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser
  • -G : автоматически добавить пользователя в sftpgroup.
  • -d : указать домашний каталог для нового пользователя.
  • -s : установить для нового пользователя значение по умолчанию /sbin/nologin, что означает, что пользователь не может получить доступ к SSH-серверу.

3. Затем создайте пароль для пользователя sftpuser с помощью приведенной ниже команды.

Введите надежный пароль и повторите его, затем нажмите Enter для подтверждения.

Чтобы добавить других пользователей, повторите этапы 2 и 3 и, что наиболее важно, все пользователи SFTP должны входить в группу sftpgroup без доступа к оболочке через SSH.

Настройка каталога Chroot Jail

После создания новой группы и пользователя необходимо создать и настроить каталог chroot для пользователей SFTP.

1. Для пользователя sftpuser новый домашний каталог будет находиться в /srv/sftpuser. Выполните команду ниже, чтобы создать его.

2. Чтобы настроить chroot для пользователя sftpuser, вы должны сменить владельца каталога на пользователя root, но остаться группой для чтения и выполнения без права записи.

Измените владельца каталога на пользователя root, используя следующую команду.

sudo chown root /srv/sftpuser

Дайте группе разрешение на чтение и выполнение, но не на запись.

sudo chmod g+rx /srv/sftpuser

3. Затем создайте новый каталог данных внутри каталога /srv/sftpuser и измените владельца этого каталога data на пользователя sftpuser.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Ниже приведены подробные сведения о конфигурации пользовательского каталога SFTP.

  • Каталог /srv/sftuser является домашним каталогом по умолчанию.
  • Пользователь sftpuserне может писать в каталог /srv/sftpuser, но может читать внутри этого каталога.
  • Пользователь sftpuser может загружать файлы на сервер SFTP в каталоге /srv/sftpuser/data.

Включить SFTP на SSH-сервере

Чтобы включить SFTP-сервер на OpenSSH, вы должны отредактировать конфигурацию SSH /etc/ssh/sshd_config.

Читайте также:  Linux ubuntu изменить ip адрес

1. Отредактируйте конфигурацию ssh /etc/ssh/sshd_config с помощью nano или vim.

sudo nano /etc/ssh/sshd_config

2. Прокомментируйте следующую конфигурацию, чтобы отключить функцию автономного sftp-сервера.

#Subsystem sftp /usr/lib/openssh/sftp-server

3. Вставьте следующую конфигурацию в конец строки.

Subsystem sftp internal-sftp

Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp

Сохраните конфигурацию и выйдите.

  • Вместо подпроцесса sftp-server использовался internal-sftp.
  • Сервер SFTP включен для группы sftpgroup.

4. Чтобы применить новую конфигурацию, перезапустите службу ssh с помощью приведенной ниже команды.

sudo systemctl restart sshd

Сервер SFTP готов и доступен и работает на том же порту, что и служба SSH.

Доступ к SFTP-серверу

На стороне клиента мы будем использовать командную строку sftp, которая установлена по умолчанию в большинстве дистрибутивов Linux. Но вы также можете использовать другой клиент командной строки или FTP-клиент с графическим интерфейсом, например FileZilla, Cyberduck и т. д.

1. Чтобы подключиться к SFTP-серверу, выполните команду sftp, как показано ниже.

Если ваш сервер SFTP и/или SSH работает на пользовательском порту, вы можете использовать команду sftp, как показано ниже.

Введите пароль для sftpuser.

2. После подключения к SFTP-серверу выполните следующую команду.

Показать рабочий каталог текущего пути и список всех доступных файлов и каталогов.

3. Загрузите локальный файл на SFTP-сервер в каталог /, что приведет к отказу в доступе, поскольку это chroot-каталог.

4. Загрузите локальный файл в каталог /data/ на SFTP-сервере. Если ваша конфигурация верна, ваш файл будет загружен в каталог /data/.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5. Теперь проверьте доступные файлы в каталоге /data с помощью следующей команды.

И вы увидите, что ваш файл загружен на SFTP-сервер.

Заключение

Поздравляем! Вы успешно настроили SFTP-сервер в системе Linux. Этот тип конфигурации можно применять в большинстве систем Linux с установленным поверх него OpenSSH. Кроме того, вы узнали, как настроить каталог chroot для пользователей SFTP, и изучили базовую команду клиента sftp.

Источник

Руководство по установке SFTP сервера на Linux

img

Привет, друг! Мы подготовили удобную инструкцию по установке и настройке SFTP-сервера Linux.

Руководство по установке SFTP сервера на Linux

Что такое SFTP?

SFTP — это безопасный протокол передачи файлов — «Secure SHell» File Transfer Protocol. То есть это версия FTP, которая для безопасности поверх использует SSH. FTP делает то же самое, но без шифрования, поэтому использовать SFTP предпочтительнее.

Установка SFTP-сервера на Linux

Чтобы выполнить эти шаги, вам нужно иметь права sudo. SFTP прост в установке, но сначала необходимо установить OpenSSH со стороны сервера и SSH-пакет со стороны клиента.

Читайте также:  Nvidia geforce 7300 linux

Чтобы установить OpenSSH на сервер, используйте следующую команду:

sudo apt install openssh-server [Ubuntu/Debian] sudo yum –y install openssh-server openssh-clients [CentOS/RHEL]

Вам также понадобится SSH на компьютере, с которого вы хотите получать доступ к серверу SFTP.

sudo apt install ssh [Ubuntu/Debian]

Теперь все готово для настройки SFTP.

Этап 1: Создание групп, пользователей, каталогов

Для безопасного использования SFTP, лучше всего создать группы и пользователей, которые будут использовать только эту службу.

Создадим группу с названием sftpg, при помощи комыды groupadd :

Далее создадим пользователя seenisftp, и добавим его в группу.

sudo useradd -g sftpg seenisftp sudo passwd seenisftp

В команде useradd параметр -g указывает группе, какого пользователя нужно добавить.

Предположим, что вы хотите использовать каталог /data/ в качестве корневого для sftp, а /data/USERNAME — для каждого пользователя. Поэтому, когда пользователи входят через sftp, они должны будут оказаться в каталоге /data/USERNAME . Также создадим ограничение при котором пользователи смогут читать файлы из этого каталога, но загружать их смогут только в каталог uploads .

Cоздадим каталоги и изменим их доступ:

sudo mkdir -p /data/seenisftp/upload sudo chown -R root.sftpg /data/seenisftp sudo chown -R seenisftp.sftpg /data/seenisftp/upload

Важно: убедитесь, что владелец /data/USERNAME и есть root, это обязательно для изменения корневого каталога в SFTP

Этап 2: Настройка sshd_config

Далее нужно настроить сервер так, чтобы когда пользователь, из группы sftpg, входил в систему, он попадал в sftp вместо обычной оболочки, в которую попадает через ssh. Добавьте следующий фрагмент кода в файл /etc/ssh/sshd_config :

Match Group sftpg ChrootDirectory /data/%u ForceCommand internal-sftp

ChrootDirectory позволяет создать необходимый каталог в качестве корневого узла ( / каталог) в дереве каталогов. Вошедший в систему пользователь не сможет увидеть ничего выше этого каталога и это не даст ему получить доступ к файлам других пользователей. %u — это escape код для заполнения его текущим именем пользователяm, во время входа в систему.

Этап 3: Перезагрузите службу

Чтобы выполнить внесенные в sshd_config изменения, перезапустите службу:

sudo systemctl restart sshd

Доступ к SFTP через командную строку Linux

Заходите в SFTP также как в SSH:

Примеры команд SFTP

COMMAND [SOURCE] [DESTINATION]

Параметрами могут быть либо локальные, либо удаленные системные пути.

    GET — загрузка содержимого с удаленного сервера в локальную систему.

PUT ~/Pictures/picture2.jpg uploads/

Источник

Оцените статью
Adblock
detector