Гид по технологиям

sFTPGo на Rocky Linux: установка и настройка безопасного SFTP / WebDAV / HTTP(S) сервера

10 min read Сервер Обновлено 15 Nov 2025
sFTPGo на Rocky Linux: установка и настройка
sFTPGo на Rocky Linux: установка и настройка

TL;DR

sFTPGo — современный SFTP-сервер с поддержкой HTTPS и WebDAV. В этой инструкции показано, как установить sFTPGo на Rocky Linux (v8/ v9), включить веб-панель и WebDAV, открыть порты в firewalld, подключить SSL-сертификаты от Let’s Encrypt и создать пользователей. В конце — чеклисты, сценарии отката, рекомендации по безопасности и часто задаваемые вопросы.

Важно: перед развёртыванием в продакшен убедитесь, что у вас есть резервные копии конфигурации и доступ к консоли сервера.

О чём статья

  • Установка sFTPGo через репозиторий DNF или RPM-пакет
  • Конфигурация протоколов: SFTP (порт 2022), httpd (порт 8080), WebDAV (порт 8090)
  • Настройка SSL (Let’s Encrypt) и firewalld
  • Создание администратора и пользователей через веб-интерфейс
  • Примеры подключения: FileZilla (SFTP), WebClient, WebDAV
  • Проверки, сценарии восстановления и рекомендации по безопасности

Введение

sFTPGo — гибкий сервер для обмена файлами с поддержкой нескольких бэкендов хранения (локальный файловый диск, S3-совместимые хранилища, Google Cloud Storage, Azure Blob и т. п.), баз данных (SQLite по умолчанию, PostgreSQL, MySQL/MariaDB) и множества сетевых протоколов: SFTP, FTP/S, HTTP/S и WebDAV. Он подходит как для локального использования, так и для корпоративных развёртываний.

Определения в одну строку:

  • SFTP: безопасная передача файлов по SSH.
  • WebDAV: расширение HTTP для работы с удалённой файловой системой.
  • httpd в контексте sFTPGo: встроенный HTTPS-интерфейс администратора и WebClient.

Требования

  • Сервер с Rocky Linux 8 или 9.
  • Ненулевой привилегированный sudo-пользователь.
  • Домен, указывающий на IP сервера (рекомендуется для SSL и доступа из браузера).
  • Доступ к Интернету для установки пакетов и получения SSL-сертификатов.

Советы по окружению:

  • Для продакшена используйте отдельный IP или поддомен и защитный брандмауэр.
  • Планируйте резервное хранилище для логов и бэкапов конфигураций.

Установка sFTPGo (варианты)

Есть два основных способа установки: через репозиторий с помощью DNF или установкой RPM-пакета. Оба варианта показаны ниже; выберите тот, который удобнее вам.

Установка через DNF (рекомендуемый для упрощённого обновления)

Добавьте репозиторий 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:

sudo dnf update
sudo dnf install sftpgo

Если система запрашивает подтверждение GPG-ключа репозитория — подтвердите.

Добавление репозитория и установка sFTPGo

После установки запустите и включите сервис:

sudo systemctl start sftpgo
sudo systemctl enable sftpgo

Проверьте статус:

sudo systemctl status sftpgo

Проверка статуса sFTPGo

Установка через RPM (альтернатива)

Если вы хотите загрузить конкретную версию вручную, можно скачать RPM с релизов GitHub и установить его.

Пример автоматического скачивания последнего релиза:

VER=$(curl -s https://api.github.com/repos/drakkan/sftpgo/releases/latest|grep tag_name | cut -d '"' -f 4 |sed 's/v//g')  
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.x86_64.rpm

Установите RPM-пакет:

sudo rpm -Uvh sftpgo-$VER-1.x86_64.rpm

После установки включите и запустите сервис:

sudo systemctl enable sftpgo
sudo systemctl start sftpgo

Проверьте статус:

sudo systemctl status sftpgo

Установка sFTPGo через RPM

Примечание: в оригинальном примере в командах была опечатка systemd-юнита (sftpdgo). Используйте единое имя сервиса sftpgo.

Настройка firewalld для sFTPGo

sFTPGo использует несколько сервисов и портов. Для доступа клиентов и администраторов откройте необходимые порты.

Рекомендуемые порты:

Protocol     Port       Доступ
-----------------------------------
TCP          8080       httpd (админ/веб-клиент)
TCP          2022       SFTP
TCP          8090       WebDAV (HTTPS)

Добавьте правила в firewalld и перезагрузите настройки:

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --permanent --add-port=2022/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

Если сервер находится за NAT, перенаправьте эти порты на внешний IP/маршрутизатор. Для дополнительных зон firewalld укажите ключ –zone=public (или вашу зону).

Добавление портов в firewalld

Совет: ограничьте доступ к административному порту (8080) по IP-адресу или VPN для большей безопасности.

Подготовка SSL (Let’s Encrypt)

Для защищённых HTTPS/WebDAV соединений нужен сертификат. Рекомендуется использовать Let’s Encrypt и certbot.

Установка certbot и получение сертификата (пример для Apache/Nginx не требуется, используем –standalone):

sudo dnf install certbot
sudo certbot certonly --standalone -d sftp.example.com

Полученные файлы обычно лежат в /etc/letsencrypt/live/sftp.example.com/fullchain.pem и privkey.pem. Эти пути нужно указать в конфигурации sFTPGo.

Важно: если на сервере уже запущен веб-сервер на 80/443, используйте –webroot или получите сертификат на другом хосте и перенесите файлы.

Конфигурация sFTPGo (файл sftpgo.json)

Файл конфигурации находится обычно по пути /etc/sftpgo/sftpgo.json. Всегда делайте резервную копию перед изменением:

sudo cp /etc/sftpgo/sftpgo.json /etc/sftpgo/sftpgo.json.bak
sudo nano /etc/sftpgo/sftpgo.json

Ниже приведены ключевые фрагменты для WebDAV и HTTP (httpd). Обновите пути к сертификатам и, при необходимости, адреса привязки.

Пример фрагмента webdavd (отредактируйте certificate_file и certificate_key_file):

  "webdavd": {  
    "bindings": [  
      {  
        "port": 8090,  
        "address": "",  
        "enable_https": true,  
        "certificate_file": "/etc/letsencrypt/live/sftp.example.com/fullchain.pem",  
        "certificate_key_file": "/etc/letsencrypt/live/sftp.example.com/privkey.pem",  
        "min_tls_version": 12,  
        "client_auth_type": 0,  
        "tls_cipher_suites": [],  
        "prefix": "",  
        "proxy_allowed": [],  
        "client_ip_proxy_header": "",  
        "client_ip_header_depth": 0  
      }  
    ],

Фрагмент httpd (включая веб-панель и WebClient):

  "httpd": {  
    "bindings": [  
      {  
        "port": 8080,  
        "address": "",  
        "enable_web_admin": true,  
        "enable_web_client": true,  
        "enabled_login_methods": 0,  
        "enable_https": true,  
        "certificate_file": "/etc/letsencrypt/live/sftp.example.com/fullchain.pem",  
        "certificate_key_file": "/etc/letsencrypt/live/sftp.example.com/privkey.pem",  
        "min_tls_version": 12,  
        "client_auth_type": 0,  
        "tls_cipher_suites": [],  
        "proxy_allowed": [],  
        "client_ip_proxy_header": "",  
        "client_ip_header_depth": 0,  
        "hide_login_url": 0,  
        "render_openapi": true,  
        "web_client_integrations": [],

После правки перезапустите сервис:

sudo systemctl restart sftpgo

Примечание: внимательно указывайте верный путь к сертификатам (в примере исходной инструкции были опечатки с “letsencryt”).

Настройка хранилища и базы данных (обзор)

sFTPGo по умолчанию использует SQLite для хранения метаданных; для более крупной инфраструктуры стоит рассмотреть PostgreSQL или MySQL/MariaDB. Бэкенды хранения файлов также разнообразны:

  • Локальная файловая система (включая зашифрованные каталоги).
  • Amazon S3 / S3-совместимые сервисы.
  • Google Cloud Storage.
  • Azure Blob Storage.

Пример: настроить S3-бэкенд можно через GUI или добавить профиль в конфигурации bэкендов. В документации sFTPGo есть подробные примеры конфигурации для каждого провайдера.

Когда использовать базы:

  • SQLite: тестовые и небольшие инсталляции.
  • PostgreSQL/MySQL: когда требуется высокая нагрузка, кластеризация и резервные копии.

Создание администратора и пользователей через веб-интерфейс

Откройте в браузере: https://sftp.example.com:8080/ (замените sftp.example.com на ваш домен). При первом запуске система предложит создать администратора.

  • Заполните форму: имя администратора, email, пароль.
  • После входа создайте группы и пользователей через меню “Groups” и “Users”.

Пошагово (GUI):

  1. Меню “Groups” → “New group” → укажите имя (например, manager) → примените ACL, дисковую квоту и ограничение трафика при необходимости.
  2. Меню “Users” → “New user” → укажите логин (alice), пароль, привязать к группе manager, задать домашнюю директорию и права.

Экран создания администратора Панель администратора sFTPGo

Подсказка: можно автоматизировать создание пользователей через REST API или CLI-инструменты sFTPGo.

Примеры подключения клиентов

Ниже приведены детальные примеры для популярных клиентов.

Подключение через FileZilla (SFTP)

Откройте FileZilla → File → Site Manager (или Ctrl+S) → New site.

Параметры:

  • Protocol: SFTP - SSH File Transfer Protocol
  • Host: sftp.example.com
  • Port: 2022
  • Logon Type: Normal
  • User: alice
  • Password: <ваш пароль>

Нажмите Connect. При первом подключении клиент спросит принять серверный сертификат/ключ — подтвердите, если доверяете серверу.

Подключение через FileZilla

После соединения вы сможете передавать файлы как обычно.

Доступ через WebClient (httpd)

Откройте в браузере: https://sftp.example.com:8080/web/client/login Войдите под пользователем alice. Через WebClient можно загружать файлы, настраивать 2FA, создавать публичные ссылки на файлы и управлять ACL.

Вход в WebClient sFTPGo

Подключение через WebDAV

Примеры URL и подсказки по монтированию:

  • Windows: через “Map network drive” или прописав адрес в Проводнике: davs://sftp.example.com:8090/
  • macOS: Finder → Go → Connect to Server → davs://sftp.example.com:8090/
  • Linux (Nautilus, Dolphin): в адресной строке используйте davs://sftp.example.com:8090/

Вставьте учетные данные (alice и пароль). Если используется самоподписанный сертификат, ОС может запросить доверие к сертификату.

Подключение через WebDAV в файловом менеджере

Автоматизация: примеры команд и REST API

sFTPGo предоставляет HTTP REST API для управления пользователями, группами и бэкендами. Примеры запросов можно найти в официальной документации (OpenAPI), а WebAdmin обычно имеет пункт “Render OpenAPI”.

Короткая демонстрация: получить список пользователей через API (пример, предварительно получите токен администратора):

# Пример curl-запроса (требует корректный токен авторизации)
curl -X GET "https://sftp.example.com:8080/api/v2/users" -H "Authorization: Bearer " -k

Не забывайте защищать токены и хранить их в сейфе секретов.

Проверки и критерии приёмки

Перед переводом в продакшен выполните следующие проверки:

  • Сервис sftpgo запущен и включён в systemd.
  • Порты 8080, 8090 и 2022 доступны из нужных сетей.
  • SSL-сертификаты корректны и не истекают.
  • Администратор создан, доступен GUI, можно создать пользователя.
  • Пользователь может подключиться через SFTP и WebClient и передать файл.
  • Логирование работает и логи собираются системой ретенции.

Критерии приёмки:

  • Все перечисленные проверки успешны.
  • Документация по развёртыванию и откату сохранена в репозитории.

Runbook: типичные операции и откат

Операция: обновление sFTPGo через DNF

  1. Сделайте бэкап /etc/sftpgo/sftpgo.json и папки хранения.
  2. Выполните sudo dnf upgrade sftpgo
  3. Перезапустите: sudo systemctl restart sftpgo
  4. Проверьте статус и логи: sudo journalctl -u sftpgo –no-pager -n 200

Откат (если новая версия нарушила работу):

  1. sudo systemctl stop sftpgo
  2. Восстановите предыдущий sftpgo.json из бэкапа.
  3. Если обновлён бинарный пакет, установите старую версию RPM (если доступна).
  4. sudo systemctl start sftpgo

Инцидент: некорректный SSL после обновления certbot

  1. Проверьте файлы сертификата в /etc/letsencrypt/live/.
  2. Перезапустите sftpgo: sudo systemctl restart sftpgo
  3. Если проблема не решена — временно отключите enable_https: false в sftpgo.json для диагностики (не рекомендуется в продакшене).

Роли и чеклисты

Чеклист для администратора (DevOps):

  • Настроить бэкап конфигурации и данных.
  • Настроить мониторинг статуса сервиса и метрик диска/трафика.
  • Ограничить доступ к 8080 по IP/VPN.
  • Настроить автоматическое обновление сертификатов.

Чеклист для владельца сервиса (Owner):

  • Определить SLA для восстановления сервиса.
  • Настроить квоты и ACL для пользователей/групп.
  • Подготовить процесс управления доступом и ротации паролей.

Чеклист для пользователя (User):

  • Получить учётные данные и тестовый доступ.
  • Убедиться, что можно загружать и скачивать файлы.
  • При необходимости включить 2FA через WebClient.

Безопасность и жёсткие рекомендации

  • Всегда используйте HTTPS для WebClient и WebDAV (enable_https: true).
  • Закрывайте административный порт 8080 от публичного интернета, если возможно.
  • Ограничивайте права пользователей и используйте группы с ACL.
  • Логируйте и централизуйте логи (rsyslog, ELK или аналог).
  • Планируйте регулярные обновления и тесты восстановления бэкапов.

Security hardening — чеклист:

  • Принудительное использование TLS 1.2+ (min_tls_version: 12).
  • Настройка HSTS, если фронтенд проходит через обратный прокси.
  • Установка fail2ban на SSH/SFTP для защиты от грубфорса (если применимо).
  • Ограничение исходящих подключений сервиса (security group / firewall).

Цитата эксперта: “Простая и надёжная конфигурация с регулярными бэкапами и ограничением доступа часто сильнее сложных мер безопасности без дисциплины в эксплуатации.”

Конфиденциальность и соответствие GDPR

Если вы храните персональные данные через sFTPGo (имена пользователей, загружаемые файлы), продумайте следующие моменты:

  • Убедитесь, что доступ к данным ограничен и логируются все админ-операции.
  • Настройте политики хранения и удаления данных (retention policy).
  • При необходимости предоставьте механизмы удаления/экспорта данных по запросу пользователя.

Эти рекомендации помогут соответствовать общим требованиям в области защиты персональных данных; при юридических сомнениях проконсультируйтесь с юристом.

Тестовые случаи и приёмка (микро)

  • TC-01: Установить sftpgo, создать администратора, зайти в GUI — ожидаемый результат: доступ присутствует.
  • TC-02: Создать пользователя alice, подключиться через SFTP — ожидаемый результат: успешная передача файлов.
  • TC-03: Монтаж WebDAV в файловом менеджере — ожидаемый результат: директория доступна для чтения/записи согласно ACL.
  • TC-04: Обновление сертификата — ожидаемый результат: перезапуск sftpgo и корректные HTTPS-подключения.

Отладка — часто встречаемые проблемы и их решения

  • Проблема: невозможность подключиться через SFTP.

    • Проверьте, запущен ли сервис systemctl status sftpgo.
    • Убедитесь, что порт 2022 открыт в firewalld и нет сетевого блокирования.
    • Посмотрите логи: sudo journalctl -u sftpgo -n 200
  • Проблема: браузер не доверяет сертификату.

    • Убедитесь, что сертификат действителен и корректно указан в sftpgo.json.
    • Если используете самоподписанный сертификат — импортируйте его в доверенные хранилища клиента.
  • Проблема: WebDAV монтируется только на чтение.

    • Проверьте права файловой системы на стороне сервера и настройки ACL в sFTPGo для пользователя.

Дополнительные варианты развёртывания (альтернативные подходы)

  • Размещение sFTPGo за обратным прокси (Nginx/Traefik) для управления TLS, HSTS и rate-limiting.
  • Использование внешней базы данных (PostgreSQL) для масштабируемости.
  • Интеграция с системой аутентификации LDAP/AD для централизованного управления пользователями.

Пример проксирования через Nginx (упрощённо):

# Пример server блока Nginx для проксирования WebClient
server {
  listen 443 ssl;
  server_name sftp.example.com;

  ssl_certificate /etc/letsencrypt/live/sftp.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/sftp.example.com/privkey.pem;

  location / {
    proxy_pass https://127.0.0.1:8080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

1‑строчный глоссарий

  • ACL: набор правил доступа к файлам/директориям.
  • WebClient: веб-интерфейс sFTPGo для пользователей.
  • httpd: встроенный в sFTPGo HTTPS-интерфейс и WebClient.

Часто задаваемые вопросы

Как обновлять сертификаты Let’s Encrypt автоматически?

Используйте certbot с cron или systemd-timer. После обновления сертификатов перезапустите sftpgo или отправьте ему сигнал для перезагрузки конфигурации.

Можно ли использовать sFTPGo без SSL?

Технически можно, но не рекомендуется: WebClient и WebDAV в таком случае будут передавать данные в открытом виде. Лучше включить HTTPS.

Как подключить S3-бэкенд для хранения файлов?

Через GUI или добавление профиля в конфигурации: укажите endpoint, ключи доступа и имя бакета, затем сопоставьте профиль пользователю или группе.

Где смотреть логи sFTPGo?

Журналы доступные через systemd: sudo journalctl -u sftpgo. Дополнительно можно настраивать файловые лог-файлы в конфигурации.

Список пользователей в админке sFTPGo

Заключение

Вы развернули sFTPGo на Rocky Linux и настроили основные протоколы: SFTP, WebDAV и HTTPS через httpd. В статье рассмотрены варианты установки, настройка SSL, открытие портов в firewalld, создание пользователей и практические чеклисты для эксплуатации и безопасности. Следуйте процедурам бэкапа и отката, ограничивайте доступ к административному интерфейсу и используйте внешние бэкенды и базы данных для масштабирования.

Короткий список дальнейших шагов:

  • Настроить автоматическое обновление сертификатов и мониторинг логов.
  • Подумать о внешней базе данных для большего масштаба.
  • Внедрить регулярное тестирование отката обновлений.

FAQ (в конце статьи)

  1. Как получить помощь по специфичным ошибкам? Проверьте логи systemd и документацию на GitHub проекта sFTPGo. Коммьюнити и issue-трекер часто содержат решения для типичных проблем.
  2. Поддерживает ли sFTPGo двухфакторную аутентификацию? Да, WebClient поддерживает двухфакторную аутентификацию; её можно включить для пользователей в интерфейсе.
  3. Можно ли интегрировать sFTPGo с LDAP/AD? Да, sFTPGo поддерживает внешние механизмы аутентификации, включая LDAP/AD — настройка выполняется через конфигурацию или API.

Загрузка файла через WebClient

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Herodotus — Android‑троян: признаки и защита
Кибербезопасность

Herodotus — Android‑троян: признаки и защита

Включить новое меню Пуск в Windows 11
Windows

Включить новое меню Пуск в Windows 11

Панель полей сводной таблицы в Excel
Excel

Панель полей сводной таблицы в Excel

Включить новое меню «Пуск» в Windows 11
Windows

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — исправление
Windows

Дубликаты Диспетчера задач в Windows 11 — исправление

История просмотров Reels в Instagram — как найти
Социальные сети

История просмотров Reels в Instagram — как найти