Добавить пользователя sftp linux

Setup SFTP User Accounts on Ubuntu 20.04

Secure file transfer protocol (SFTP) is a secure way of transferring files between a local and remote computer using an encrypted SSH session. It is an improved version of the traditional file transfer protocol (FTP), which adds a layer of security during the file transfer and connection establishment processes.

In this guide, you will set up SFTP User accounts on Ubuntu 20.04, and allow the user to strictly access files within the home directory.

Prerequisites

Setup SFTP

Create a new SFTP Users Group. Replace sftpcorner with your desired group name.

Create a new user account. Replace exampleuser with your desired user name.

Enter the user’s full name, password to continue.

Then, add the user to the SFTP group.

$ sudo usermod -G sftpcorner exampleuser 

Restrict the user from accessing files outside the home directory.

$ sudo chown root:root /home/exampleuser 

Now, create new subdirectories within the user home directory. These are used for file transfer.

$ sudo mkdir /home/exampleuser/uploads 

Grant the user ownership rights to the subdirectories.

$ sudo chown -R exampleuser:exampleuser /home/exampleuser/uploads 

Then, allow read and write permissions to all files within the home directory.

$ sudo chmod -R 755 /home/exampleuser/ 

Configure SFTP

With the sftp group and user accounts created, enable SFTP in the main SSH configuration file.

Using an editor of your choice, open the file /etc/ssh/sshd_config .

$ sudo vim /etc/ssh/sshd_config 

Add the following lines to the end of the file. Replace sftpcorner with your actual sftp group.

Match Group sftpcorner ChrootDirectory %h PasswordAuthentication yes AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp 

Below are the functions for each of the above configuration lines:

  • Match Group sftpcorner: Match the user group sftpcorner .
  • ChrootDirectory %h: Restrict access to directories within the user’s home directory.
  • PasswordAuthentication yes: Enable password authentication.
  • AllowTcpForwarding no: Disable TCP forwarding.
  • X11Forwarding no: Don’t permit Graphical displays.
  • ForceCommand internal-sftp: Enable SFTP only with no shell access.

Also, confirm if SFTP is enabled (it is by default). The line below should be uncommented in /etc/ssh/sshd_config :

# override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server 

Restart the SSH server for changes to take effect.

$ sudo systemctl restart sshd 

Login to SFTP

Open a new terminal window and log in with sftp using a valid user account and password.

$ sftp exampleuser@127.0.01 (If running within the same server SSH session) 

List files within the directory. Your output should be similar to the one below:

exampleuser@127.0.0.1's password: Connected to 127.0.0.1. sftp> ls uploads sftp> 

Also, try creating a new directory within the subdirectory to test user permissions.

sftp> cd uploads sftp> mkdir files 

Confirm creation of the new directory:

Читайте также:  Linux права папок chmod

FileZilla and Cyberduck are the most popular SFTP clients available for Windows, Mac, and Linux desktop to test connectivity using a desktop client.

Conclusion

In this guide, you successfully set up SFTP on a Ubuntu 20.04 server, then tested connectivity through a terminal session and FileZilla. You can create multiple users with different directories to securely upload and download files on your server.

Want to contribute?

You could earn up to $600 by adding new articles.

Источник

Как установить и использовать 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.

Для пользователей 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 connect to attached screen

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.

Источник

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