Поиск по сайту:

Настройка SFTP-сервера с помощью SFTPGo в Linux

Установите и настройте SFTP-сервер с помощью SFTPGo в Linux

В этом подробном руководстве объясняется, что такое SFTPGo, как установить SFTPGo в различных дистрибутивах Linux и, наконец, как настроить SFTP-сервер с SFTPGo в Linux. .

Что такое СФТПГо?

SFTPGo — это полнофункциональный и легко настраиваемый SFTP-сервер, который позволяет легко и безопасно обмениваться файлами через SFTP и, при необходимости, HTTP/S, FTP/S и WebDAV.

Используя SFTPGo, мы можем настроить надежный SFTP-сервер в Linux за несколько минут. Мы можем настроить SFTPGo со многими поставщиками серверных хранилищ, включая локальную файловую систему, зашифрованную локальную файловую систему, объектное хранилище S3 (совместимое), облачное хранилище Google, хранилище BLOB-объектов Azure и SFTP.

SFTTPGo полностью бесплатен, имеет открытый исходный код и написан на языке программирования Go. Исходный код доступен на GitHub.

SFTPGo — кроссплатформенное приложение. Он поддерживает Linux, Windows, macOS и FreeBSD. Это должно работать и с другими вариантами *BSD.

Возможности STFTPGo

SFTTPGo поставляется с множеством функций. Вот некоторые важные особенности:

  • SFTPGo очень прост в установке и настройке.
  • Поддерживает несколько серверных хранилищ, таких как локальная файловая система, зашифрованная файловая система, хранилище объектов, совместимое с S3, облачное хранилище Google, хранилище BLOB-объектов Azure или другие учетные записи SFTP через SFTP/SCP/FTP/WebDAV.
  • Поддерживает виртуальные папки. Вы можете установить разные ограничения квоты для каждого пользователя.
  • Поддерживаются различные поставщики данных, такие как SQLite, MySQL, PostgreSQL, CockroachDB, Bolt и т. д.
  • Настройте изоляцию chroot для локальных пользователей.
  • Ограничьте учетные записи пользователей в облаке определенным базовым путем.
  • Настройте разрешения для каждого пользователя или для каждого каталога.
  • Разрешите или запретите пользователям загружать, скачивать, переименовывать, изменять и удалять файлы.
  • Поддерживает аутентификацию как по открытому ключу, так и по паролю. Также поддерживается несколько открытых ключей для каждого пользователя.
  • Шифрование хранящихся данных.
  • Многофакторная аутентификация.
  • Регулирование пропускной способности и ограничение скорости для каждого пользователя.
  • Ограничьте вход в систему определенным диапазоном IP-адресов или определенным IP-адресом.
  • Автоматически закрывать неактивные соединения.
  • Автоматически блокировать хосты (IP-адреса) при нескольких неудачных попытках входа в систему.
  • Предотвратите DoS и подбор пароля методом перебора.
  • Разрешать/запрещать соединения на основе географического расположения IP-адресов клиентов.
  • Поддержка репозиториев Git через SSH.
  • Поддерживаются SCP, Rsync, FTP/S, HTTP/S и WebDAV.
  • Настройте сертификаты TLS для HTTPS, WebDAV и FTPS от Let's Encrypt. Он также автоматически обновляет сертификаты.
  • Настройте ограничения протоколов для каждого пользователя.
  • Импортируйте учетные записи пользователей локальной системы.
  • Веб-интерфейс администрирования для создания и управления пользователями, папками и подключениями.
  • Разрешите пользователям изменять свои учетные данные, управлять своими файлами и делиться ими в браузере через интерфейс веб-клиента.
  • Полностью бесплатный и с открытым исходным кодом.

Установите SFTPGo в Linux

SFTPGo упакован для популярных дистрибутивов Linux. Перейдите в соответствующий раздел, чтобы узнать, как установить SFTPGo в предпочитаемом вами дистрибутиве Linux.

Установите SFTPGo в Arch Linux

В Arch Linux и его вариантах, таких как EndeavourOS и Manjaro Linux, вы можете установить SFTPGo из AUR, используя Paru или Yay:

paru -S sftpgo

Или,

yay -S sftpgo

Установите SFTPGo в Debian

В Debian 10 и 11 добавьте репозиторий SFTPGo APT и установите SFTPGo, как показано ниже.

Убедитесь, что вы установили gnupg в своей системе Debian:

sudo apt install gnupg

Затем импортируйте публичный ключ GPG:

curl -sS https://ftp.osuosl.org/pub/sftpgo/apt/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/sftpgo-archive-keyring.gpg

Добавьте репозиторий SFTTPGo Apt в файл sources.list:

CODENAME=`lsb_release -c -s`
echo "deb [signed-by=/usr/share/keyrings/sftpgo-archive-keyring.gpg] https://ftp.osuosl.org/pub/sftpgo/apt ${CODENAME} main" | sudo tee /etc/apt/sources.list.d/sftpgo.list

Перезагрузите списки репозиториев и установите SFTPGo в Debian, используя следующие команды:

sudo apt update
sudo apt install sftpgo

Установите SFTPGo в Fedora, RHEL, CentOS, AlmaLinux и Rocky Linux.

Добавьте репозиторий SFTPGo:

ARCH=`uname -m`
curl -sS https://ftp.osuosl.org/pub/sftpgo/yum/${ARCH}/sftpgo.repo | sudo tee /etc/yum.repos.d/sftpgo.repo

Обновите списки репозиториев и установите SFTPGo в системах на базе RPM с помощью команд:

sudo dnf update
sudo dnf install sftpgo

После установки SFTTPGo запустите службу sftpgo и включите ее автоматический запуск при загрузке системы:

sudo systemctl start sftpgo
sudo systemctl enable sftpgo

Установите SFTPGo в Ubuntu

Добавьте SFTPGo PPA в свою Ubuntu и ее производные, такие как Pop OS, Linux Mint и Elementary OS:

sudo add-apt-repository ppa:sftpgo/sftpgo

Обновить списки репозиториев:

sudo apt update

И установите SFTPGo в Ubuntu и его производных с помощью команды:

sudo apt install sftpgo

Установите SFTPGo в Void Linux

SFTPGo доступен в репозиториях Void Linux по умолчанию.

Чтобы установить SFTPGo в Void Linux, запустите:

xbps-install -S
xbps-install sftpgo

SFTPGo также доступен в виде образа Docker, доступного на платформах AWS, Azure и Elestio.

Создать учетную запись администратора

Прежде чем начать использовать SFTPGo, вам следует создать учетную запись администратора. Для этого перейдите по URL-адресу http://localhost:8080/web/admin или http://IP-адрес:8080/web/admin в веб-браузере. .

Введите имя пользователя для учетной записи администратора и пароль для нее. Нажмите кнопку Создать администратора, чтобы продолжить.

Создать пользователя-администратора SFTPGo

После создания учетной записи администратора вы автоматически войдете в систему. Вот как выглядит панель администратора SFTPGo.

Панель администратора STFTPGo

С этого момента вы можете получить доступ к панели веб-администратора SFTPGo по этому URL-адресу — http://127.0.0.1:8080/web/admin или http://IP-адрес:8080/. веб/администратор.

Конфигурация по умолчанию включает службу SFTP на порту 2022 и использует встроенный поставщик данных (SQLite или Bolt в зависимости от целевой ОС и архитектуры). В моем случае поставщиком данных по умолчанию является SQLite.

Вы можете просмотреть активные службы на странице Состояние на левой панели.

Страница состояния SFTPGo

По умолчанию FTP-сервер и службы WebDAV отключены.

Создать новых пользователей

Чтобы создать нового пользователя, нажмите кнопку Пользователи на левой панели, а затем щелкните знак + (Плюс).

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

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

Добавить нового пользователя

Для создания нового пользователя sftp требуются только имя пользователя, пароль или открытый ключ. Вы также можете добавить дополнительную информацию о пользователях и назначить им разрешения.

Прокрутив немного вниз раздел создания нового пользователя, вы увидите следующие вкладки:

  • Профиль. На этой вкладке вы можете

    • установить статус пользователя, т.е. активный или неактивный,
    • установить дату истечения срока действия для пользователя,
    • предоставить пользователю адрес электронной почты и описание.
  • ACL – на этой вкладке вы можете

    • добавить разрешения для каждого каталога для пользователей,
    • запретить протоколы (например, SSH, FTP, WebDAV и HTTP),
    • запретить методы входа в систему (например, открытый ключ, пароль)
    • установить двухфакторную аутентификацию для выбранных протоколов,
    • отключить веб-клиент/Rest API,
    • разрешить и запретить вход в систему с определенных IP-адресов.
  • Дисковые квоты и ограничения пропускной способности. На этой вкладке мы можем

    • установите размер квоты в МБ или ГБ. 0 (ноль) означает отсутствие ограничений.
    • максимальный размер загружаемого файла,
    • ограничение пропускной способности загрузки и выгрузки,
    • ограничения скорости полосы пропускания для каждого источника,
    • скорость загрузки и выгрузки данных,
    • ограничения на передачу данных для каждого источника.
  • Дополнительно – на этой вкладке мы можем

    • установите альтернативный начальный каталог вместо «/». Поддерживается SFTP/FTP/HTTP.
    • имя пользователя TLS,
    • безопасность FTP,
    • срок действия по умолчанию для вновь созданных общих ресурсов в количестве дней,
    • отмечать пользователей как анонимных,
    • отключить проверку файловой системы,
    • разрешить аутентификацию ключа API.

В приведенном выше примере мы создали пользователей с локальной файловой системой в качестве хранилища. Вы также можете создавать пользователей с локальной зашифрованной серверной частью, серверной частью облачного хранилища, например Amazon S3, блогом Azure, Google Cloud или другим SFTP-сервером, в качестве серверной части хранилища.

Чтобы создать пользователей с любым из вышеупомянутых серверов хранения, просто выберите соответствующее хранилище на вкладке Файловая система.

Например, чтобы создать пользователей с локальным зашифрованным сервером (шифрование данных при хранении), выберите "Локальное шифрование" в раскрывающемся списке Хранилище. Вам необходимо ввести пароль для шифрования.

Создание пользователей с помощью локального зашифрованного бэкэнда

Аналогичным образом вы можете выбрать другие серверные части, такие как AWS S3, Google Cloud Storage, Azure Blob Storage, SFTP, и HTTP и т. д.

Выберите серверное хранилище SFTTPGo.

Для получения более подробной информации посетите официальную страницу документации, указанную в конце.

Доступ к веб-клиенту

После создания всех пользователей они смогут получить доступ к своим файлам и общим ресурсам через интерфейс WebClient, доступный по этому URL-адресу http://127.0.0.1:8080/web/client или http://IP-. адрес: 8080/web/client.

Введите имя пользователя и пароль и нажмите кнопку «Войти».

Доступ к веб-клиенту SFTPGo

Вот так выглядит интерфейс веб-клиента:

Панель управления веб-клиента SFTTPGo

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

Загрузка, скачивание файлов и папок

Мы можем загружать или скачивать файлы и каталоги из командной строки, веб-клиента SFTPGo или с помощью любого стороннего клиентского приложения SFTP. Сначала мы увидим способ командной строки.

Тестирование пользователей через командную строку

Л: позвольте мне подключиться к SFTP-серверу из терминала:

sftp -P 2022 user1@192.168.1.37

Здесь,

  • -P 2022 — номер SFTP-порта.
  • user1@192.168.1.37 — имя пользователя SFTP-сервера и его IP-адрес.

Введите пароль пользователя user1 для подключения к sftp-серверу. После подключения пользователя вы увидите приглашение sftp.

user1@192.168.1.37's password: 
Connected to 192.168.1.37.
sftp> 

Вы можете проверить содержимое текущего рабочего каталога с помощью команды ls:

sftp> ls

Давайте загрузим несколько файлов на SFTP-сервер. Я собираюсь загрузить файл с именем file1.txt.

sftp> put file1.txt 
Uploading file1.txt to /file1.txt
file1.txt    

Давайте проверим, загружен ли file1.txt.

sftp> ls
file1.txt  

Да, файл загружен. Давайте создадим каталог, затем перейдем в него и загрузим в него файл.

sftp> mkdir dir1
sftp> cd dir1/
sftp> put file1.txt 
Uploading file1.txt to /dir1/file1.txt
file1.txt                                                                                                       100%    0     0.0KB/s   00:00    
sftp> 

Тестирование пользователей Sftp

Как видите, пользователь может загружать, загружать файлы и создавать каталоги на нашем SFTP-сервере.

Теперь давайте протестируем пользователей sftp через веб-клиент SFTPGo.

Тестовые пользователи через веб-клиент SFTPGo

Откройте веб-клиент SFTPGo, перейдя по URL-адресу http://127.0.0.1:8080/web/client или http://IP-адрес:8080/web/client. .

Введите учетные данные пользователя и нажмите «Войти». После входа в веб-клиент нажмите вкладку Мои файлы на левой панели. Вы увидите существующие файлы или каталоги. Нажмите кнопку «Загрузить файлы».

Нажмите кнопку «Загрузить файлы».

Выберите файлы для загрузки из вашей локальной файловой системы. Вы также можете перетаскивать файлы в интерфейсе веб-клиента. Выбрав файлы, нажмите кнопку Отправить.

Выберите файлы для загрузки

После загрузки файлов вы можете просмотреть их в разделе «Мои файлы».

Просмотр файлов в разделе «Мои файлы»

Точно так же вы можете создать новую папку и загружать в нее материалы. Чтобы создать новую папку, нажмите кнопку Добавить каталог (знак плюс).

Нажмите кнопку «Добавить каталог».

Введите имя каталога и нажмите кнопку «Отправить».

Введите имя каталога

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

Чтобы загрузить файл или папку, выберите их и нажмите кнопку "Загрузить". Выбранные элементы будут заархивированы и загружены в вашу локальную систему.

Загрузка файлов и папок

Вы также можете поделиться элементами с другими пользователями или удалить их, если они больше не нужны.

Просмотр и управление общими ресурсами

Откройте вкладку Общие ресурсы на левой панели. Справа вы увидите список доступных акций.

Добавить новую акцию

Введите имя новой общей папки, укажите путь к файлу или каталогу. Затем выберите разрешение (только чтение или чтение/запись). Если вы хотите использовать несколько общих ресурсов, нажмите кнопку Добавить путь и добавьте путь к файлу или каталогу.

Вы также можете установить пароль для общего ресурса, дату истечения срока действия, определить разрешенный IP-адрес для доступа к общим ресурсам и описание общего ресурса. Наконец нажмите кнопку «Отправить».

Введите новые данные об общем ресурсе

Установка виртуальных разрешений для каждого каталога

SFTPGo поддерживает виртуальные разрешения для каждого каталога. Для каждого пользователя вам необходимо указать глобальные разрешения, а затем переопределить их для каждого каталога, как показано на следующем снимке экрана.

Откройте веб-интерфейс администратора SFTTPGo. Выберите пользователя и нажмите кнопку Изменить.

Изменить пользователя

Перейдите на вкладку ACL и добавьте каталоги с разными разрешениями. Я добавил два каталога, а именно /read_only_dir и share1 для User1. Я выбрал разрешения list и загрузки для read_only_dir и нет разрешений для каталога share1. Нажмите Отправить, чтобы обновить настройки.

Установите разрешения для каждого каталога

Согласно приведенным выше разрешениям, user1,

  • Может отображать содержимое read_only_dir, но не может загружать в него файлы. Он также не может удалить существующие файлы. Он может только перечислять и загружать содержимое этого каталога.
  • Не могу получить доступ к папке share1.

Давайте проверим это. Войдите в систему как user1 через sftp и выполните следующие команды:

sftp -P 2022 user1@192.168.1.37
user1@192.168.1.37's password: 
Connected to 192.168.1.37.
sftp> 
sftp> ls
dir1            dir2            file1.txt       file2.txt       read_only_dir   share1          
sftp> 
sftp> cd read_only_dir/
sftp> ls
file3.txt  
sftp> 
sftp> get file3.txt 
Fetching /read_only_dir/file3.txt to file3.txt
sftp> 
sftp> rm file3.txt 
Removing /read_only_dir/file3.txt
Couldn't delete file: Permission denied
sftp> 
sftp> put file4.txt 
Uploading file4.txt to /read_only_dir/file4.txt
remote open("/read_only_dir/file4.txt"): Permission denied
sftp> 
sftp> cd ..
sftp> 
sftp> cd share1/
Couldn't canonicalize: Permission denied
sftp> 
sftp> 

Как вы видите в приведенном выше выводе, пользователь1 может просматривать и загружать файлы только из каталога read_only_dir. Но он не может удалить существующие файлы или загрузить новые файлы. Он также может получить доступ к каталогу share1.

Включите службы FTP и WebDAV

Я настоятельно рекомендую вам всегда использовать SFTP вместо FTP. Однако, если вы по какой-либо причине хотите использовать службы FTP или WebDAV, включите их только в доверенной локальной сети. По умолчанию службы FTP и WebDAV отключены.

Чтобы включить службу FTP, создайте файл переменной среды для FTP по адресу /etc/sftpgo/env.d/ftpd.env со следующим содержимым:

SFTPGO_FTPD__BINDINGS__0__PORT=2121

Перезапустите службу SFTPGo, чтобы применить изменения.

sudo systemctl restart sftpgo

Служба FTP теперь доступна через порт 2121.

Аналогично создайте файл переменных среды для WebDAV по адресу /etc/sftpgo/env.d/webdavd.env со следующим содержимым.

SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080

Перезапустите SFTPGo, чтобы применить изменения. Служба WebDAV теперь доступна через порт 10080.

Рекомендуется предоставить сертификат и файл ключа для доступа к FTP и WebDAV через TLS.

Заключение

Я использую SFTPGo в своей версии Fedora 37 Workstation уже несколько дней. За время тестирования у меня не возникло никаких проблем. SFTTPGo работает отлично «из коробки». Если вы ищете простой способ настроить SFTP-сервер на платформах Linux, macOS или Windows, рекомендуется использовать SFTPGo.

Если вы найдете SFTPGo полезным и используете его в производстве, я рекомендую вам поддержать проект любым возможным способом. Более подробную информацию можно найти на странице спонсоров проекта.

Ресурсы:

  • Репозиторий SFTPGo на GitHub
  • Документация по быстрому запуску STFTPGo

Связанное чтение:

  • Как настроить Chrooted SFTP в Linux
  • Как безопасно передавать файлы с помощью SCP в Linux

Статьи по данной тематике