bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Як налаштувати SFTP на VPS сервері?

calendar_month March 25, 2025 schedule 9 хв. читання visibility 573 переглядів
person
Valebyte Team
Як налаштувати SFTP на VPS сервері?
summarize

TL;DR

  • ['SFTP шифрує дані через SSH, захищаючи паролі і файли від перехоплення, на відміну від небезпечного FTP.', 'Протокол працює через порт 22, що дозволяє не відкривати зайві порти в брандмауері сервера.', 'SFTP вбудований в OpenSSH, тому для його роботи не потрібна установка окремих FTP-демонів.', 'Для підвищення безпеки рекомендується налаштовувати chroot для ізоляції користувачів в їх папках.']

Як налаштувати SFTP на VPS сервері?

Налаштування SFTP на вашому VPS сервері – це ключовий крок до безпечного та ефективного управління файлами, який ми зараз детально розберемо. На відміну від небезпечного FTP, SFTP використовує шифрування протоколу SSH, забезпечуючи конфіденційність і цілісність ваших даних під час їх передачі між локальною машиною та сервером. Цей гайд призначений для системних адміністраторів і розробників, які хочуть не просто запустити SFTP, але й зробити це правильно, з урахуванням безпеки, використовуючи ізоляцію користувачів через chroot-оточення.

Чому SFTP, а не старий добрий FTP?

A secure lock icon with a server rack keyhole, symbolizing SFTP security for VPS. Для досвідченого сисадміна питання "чому SFTP?" звучить майже риторично, але давайте все ж освіжимо в пам'яті основні аргументи, щоб бути на одній хвилі. Ми всі пам'ятаємо ті часи, коли FTP був стандартом де-факто, але в сучасному світі, де безпека даних стоїть на першому місці, його недоліки стають критичними.
  • Безпека перш за все

    Головна відмінність і перевага SFTP – це використання протоколу Secure Shell (SSH) для передачі даних. Це означає, що весь трафік, включаючи логіни, паролі та самі файли, шифрується. На відміну від цього, класичний FTP передає все у відкритому вигляді, що робить його вкрай вразливим для перехоплення даних (сніфінгу).

  • Єдиний порт

    SFTP працює через той самий порт, що і SSH (за замовчуванням 22). Це спрощує налаштування брандмауера і зменшує кількість відкритих портів на сервері. FTP, в свою чергу, вимагає відкриття декількох портів (21 для команд і динамічні порти для передачі даних в активному або пасивному режимі), що ускладнює конфігурацію і збільшує поверхню атаки.

  • Функціональність

    SFTP не просто передає файли; він пропонує повний набір функцій файлової системи: створення і видалення директорій, перейменування файлів, зміна атрибутів, створення символічних посилань і багато іншого. Все це – через захищений канал.

  • Відсутність необхідності в окремих демонах

    SFTP є частиною OpenSSH, що означає, що вам не потрібно встановлювати і налаштовувати окремий FTP-сервер (вроде Pure-FTPd або vsftpd). Якщо у вас вже працює SSH, у вас є і SFTP.

Підготовка: Що нам знадобиться?

Перш ніж ми перейдемо до команд, переконаємося, що у нас є все необхідне для успішного налаштування:
  • Віртуальний приватний сервер (VPS) від Valebyte з встановленою операційною системою на базі Linux (наприклад, Ubuntu, Debian, CentOS).
  • Доступ до серверу по SSH з правами суперкористувача (root) або користувача з можливістю використання sudo.
  • Базові знання роботи з командною строкою Linux. Ми будемо багато працювати з терміналом.
  • SFTP-клієнт на вашій локальній машині (наприклад, FileZilla, WinSCP, Cyberduck або вбудований sftp в терміналі).

Потрібен надійний VPS для вашого SFTP-сервера?

Наші VPS-плани ідеально підходять для безпечного зберігання і передачі ваших даних. Виберіть оптимальний варіант для стабільної роботи SFTP. — from €4.49/mo.

Вибрати VPS-план →
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Крок 1: Переконуємось, що OpenSSH встановлено (і працює!)

Як ми вже згадували, SFTP — це частина SSH. Тому перше, що потрібно зробити, це переконатися, що OpenSSH сервер встановлено і коректно працює на вашому VPS. Для початку, завжди хороша практика – оновити пакети в вашій системі:
sudo apt update && sudo apt upgrade -y
Якщо ви використовуєте дистрибутив на базі Red Hat (CentOS, Fedora), команди будуть трохи відрізнятися:
sudo yum update -y # або dnf update -y
Тепер перевіримо, чи встановлено OpenSSH-сервер. На Debian/Ubuntu:
sudo apt install openssh-server -y
На CentOS/RHEL:
sudo yum install openssh-server -y # або dnf install openssh-server -y
Після установки або оновлення, переконаємося, що служба SSH запущена і включена в автозавантаження:
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status sshd
Вивід останньої команди повинен показати, що служба sshd активна (active (running)).

Важливе зауваження щодо брандмауера: Якщо ви використовуєте брандмауер (наприклад, UFW на Ubuntu або firewalld на CentOS), переконайтеся, що порт SSH (за замовчуванням 22) відкритий. В противному випадку ви не зможете підключитися до серверу.

Для UFW (Ubuntu):
sudo ufw allow ssh
sudo ufw enable # якщо не включен
Для firewalld (CentOS):
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Крок 2: Створюємо виділеного SFTP-користувача і групу

Принцип найменших привілеїв – наріжний камінь безпеки. Ми не хочемо, щоб SFTP-користувач мав повний доступ до оболонки (shell) або міг вільно переміщатися по всій файловій системі. Тому ми створимо спеціальну групу і користувача, який буде мати доступ тільки до SFTP і буде ізольований в своєму домашньому каталозі (chroot). Спочатку створимо групу для наших SFTP-користувачів. Це зручно, якщо у вас буде декілька таких користувачів:
sudo addgroup sftpusers
Тепер створимо нового користувача. Важливо: ми створимо його без доступу до інтерактивної оболонки (--shell /bin/false) і додамо його в щойно створену групу sftpusers (--ingroup sftpusers). Замініть sftpuser на бажане ім'я користувача.
sudo adduser --shell /bin/false --ingroup sftpusers sftpuser
Система попросить вас задати пароль для нового користувача. Виберіть надійний пароль. Решту полів можна залишити пустими, натиснувши Enter.
sudo passwd sftpuser

Порада сисадміна: Призначення /bin/false в якості оболонки гарантує, що користувач не зможе отримати доступ до командного рядка SSH, що є важливою мірою безпеки для SFTP-користувачів.

Крок 3: Налаштовуємо SFTP-доступ з Chroot (ізоляція користувача)

Це найважливіший крок, де ми налаштовуємо SSH-сервер так, щоб наш SFTP-користувач був ізольований всередині певного каталогу (chroot). Це означає, що користувач не зможе "вибратися" за межі свого призначеного каталогу, що значно підвищує безпеку. Відкрийте конфігураційний файл SSH-сервера для редагування:
sudo nano /etc/ssh/sshd_config
Знайдіть рядок, який починається з Subsystem sftp. Зазвичай він виглядає так:
Subsystem sftp /usr/lib/openssh/sftp-server
Закоментуйте його (додавши # на початку) або змініть на:
Subsystem sftp internal-sftp

Пояснення: internal-sftp – це вбудована реалізація SFTP-сервера в OpenSSH, яка дозволяє більш гнучко налаштовувати обмеження, в тому числі і chroot.

Тепер прокрутіть файл до кінця і додайте наступний блок. Замініть sftpuser на ім'я вашого користувача.
Match User sftpuser
    ChrootDirectory /var/www/sftpusers/%u
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no
    PermitTunnel no
    AgentForwarding no

Що означає цей блок:

  • Match User sftpuser: Ці правила застосовуються тільки до користувача sftpuser. Якщо у вас кілька користувачів, ви можете використовувати Match Group sftpusers для застосування правил до всієї групи.
  • ChrootDirectory /var/www/sftpusers/%u: Це кореневий каталог, в який буде "замкнений" користувач. %u – це змінна, яка автоматично замінюється ім'ям користувача (в нашому випадку sftpuser). Таким чином, кожен користувач буде chroot-нутий у свій власний підкаталог.
  • ForceCommand internal-sftp: Примусово запускає внутрішній SFTP-сервер при підключенні цього користувача, запобігаючи доступу до звичайної оболонки.
  • AllowTCPForwarding no, X11Forwarding no, PermitTunnel no, AgentForwarding no: Відключають різні функції SSH, які не потрібні для SFTP і можуть бути використані для обходу обмежень безпеки. Це додаткові запобіжні заходи.
Збережіть зміни у файлі (Ctrl+O, Enter, Ctrl+X для nano).

Права доступу до ChrootDirectory – це критично!

Це найчастіше джерело помилок при налаштуванні SFTP з chroot. OpenSSH дуже суворо ставиться до прав доступу на каталог, який використовується як ChrootDirectory і всі його батьківські каталоги.

Правило: Каталог, вказаний в ChrootDirectory (і всі його батьківські каталоги до кореневого), повинен належати root:root і мати права 755 (або більш суворі, але не більш широкі).

Створимо структуру каталогів для нашого користувача:
sudo mkdir -p /var/www/sftpusers/sftpuser
Тепер встановимо правильні права і власника для каталогу sftpuser:
sudo chown root:root /var/www/sftpusers/sftpuser
sudo chmod 755 /var/www/sftpusers/sftpuser
Всередині цього каталогу (який тепер є "коренем" для нашого SFTP-користувача) ми створимо підкаталог, куди користувач зможе записувати файли. Цей підкаталог повинен належати SFTP-користувачу і його групі:
sudo mkdir /var/www/sftpusers/sftpuser/data
sudo chown sftpuser:sftpusers /var/www/sftpusers/sftpuser/data
sudo chmod 775 /var/www/sftpusers/sftpuser/data
Тепер користувач sftpuser зможе читати з /var/www/sftpusers/sftpuser і записувати в /var/www/sftpusers/sftpuser/data. Після всіх змін в конфігурації і правах, перезапустіть службу SSH, щоб застосувати їх:
sudo systemctl restart sshd
Якщо ви отримаєте помилку при перезапуску, перевірте логи SSH (sudo journalctl -u sshd або sudo cat /var/log/auth.log) на предмет помилок в sshd_config або проблем з правами.
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Крок 4: Тестуємо SFTP-підключення

Прийшов час перевірити наше налаштування. Використовуйте ваш улюблений SFTP-клієнт. Ми покажемо приклади для FileZilla (популярний графічний клієнт) і терміналу.

Підключення через FileZilla (або WinSCP, Cyberduck)

Відкрийте FileZilla і заповніть наступні поля:
  • Хост: IP-адреса вашого VPS сервера.
  • Ім'я користувача: sftpuser (або те ім'я, яке ви створили).
  • Пароль: Пароль, який ви встановили для sftpuser.
  • Порт: 22 (якщо ви не міняли стандартний порт SSH).
Натисніть "Швидке з'єднання". Якщо все налаштовано правильно, ви повинні будете підключитися і побачити тільки вміст каталогу /data всередині свого chroot-оточення. Ви зможете завантажувати і скачувати файли тільки в цей каталог.

Підключення через командний рядок (Linux/macOS)

Ви можете також використовувати вбудований клієнт sftp в терміналі:
sftp sftpuser@your_vps_ip
Система запросить пароль для користувача sftpuser. Після успішного входу ви побачите запрошення sftp>. Ви можете використовувати команди SFTP:
  • ls: Перегляд вмісту поточного каталогу.
  • cd data: Перейти в каталог data.
  • put local_file.txt: Завантажити файл з локальної машини на сервер.
  • get remote_file.txt: Скачати файл з сервера на локальну машину.
  • pwd: Показати поточний каталог на сервері.
  • lpwd: Показати поточний каталог на локальній машині.
  • exit: Вийти з SFTP-сесії.
Спробуйте завантажити тестовий файл в каталог data і скачати його назад, щоб переконатися в повній функціональності.

Просунуті сценарії

Налаштування, яке ми щойно виконали, є базовим і найбільш безпечним. Однак в реальних умовах можуть знадобитися більш складні конфігурації.

Кілька SFTP-користувачів з різними Chroot

Якщо вам потрібно кілька SFTP-користувачів, кожен з яких ізольований у своєму власному каталозі, ви можете використовувати Match Group:
Match Group sftpusers
    ChrootDirectory /var/www/sftpusers/%u
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no
    PermitTunnel no
    AgentForwarding no
В цьому випадку, для кожного користувача, що входить в групу sftpusers, буде створено chroot в /var/www/sftpusers/ім'я_користувача. Не забудьте для кожного нового користувача створити відповідний каталог і встановити правильні права, як це було зроблено для sftpuser.

Доступ до кількох каталогів (з обережністю!)

Іноді SFTP-користувачу потрібен доступ до каталогів за межами його chroot, наприклад, до директорії веб-сайту /var/www/html. Це ускладнює безпеку. Один із способів – використовувати bind mounts. Це дозволяє "змонтувати" існуючий каталог в підкаталог всередині chroot-оточення користувача, не порушуючи правил chroot. Наприклад, щоб дати sftpuser доступ до /var/www/html через каталог web_root всередині його chroot:
sudo mkdir /var/www/sftpusers/sftpuser/web_root
sudo mount --bind /var/www/html /var/www/sftpusers/sftpuser/web_root
Щоб mount зберігався після перезавантаження, додайте запис в /etc/fstab:
/var/www/html /var/www/sftpusers/sftpuser/web_root none bind 0 0

Увага: Використання bind mounts дає користувачу доступ до реальних системних каталогів. Переконайтеся, що права доступу на /var/www/html налаштовані так, щоб SFTP-користувач міг виконувати тільки ті дії, які йому дозволені (наприклад, тільки читання або запис тільки в певні підкаталоги).

SFTP без пароля (SSH-ключі)

Для підвищення безпеки і зручності, особливо для автоматизованих процесів або для просунутих користувачів, рекомендується використовувати SSH-ключі замість паролів. 1. Генеруєте пару ключів на локальній машині (якщо ще немає): ssh-keygen -t rsa -b 4096 2. Копіюєте публічний ключ на сервер для SFTP-користувача: ssh-copy-id sftpuser@your_vps_ip 3. Тепер ви можете підключатися до SFTP без введення пароля.

Висновки

Ми успішно налаштували безпечний SFTP-доступ на вашому VPS сервері, використовуючи вбудовані можливості OpenSSH та ізоляцію користувачів через chroot. Цей підхід забезпечує високий рівень безпеки, запобігаючи несанкціонованому доступу до інших частин вашої файлової системи та захищаючи передані дані за допомогою шифрування SSH. Пам'ятайте, що безпека – це безперервний процес. Регулярно оновлюйте вашу систему, використовуйте надійні паролі або SSH-ключі, і завжди дотримуйтесь принципу найменших привілеїв. Якщо ви шукаєте надійний і продуктивний VPS хостинг, який стане чудовою основою для ваших проєктів, зверніть увагу на пропозиції Valebyte. Ми надаємо потужні сервери, на яких ви з легкістю зможете реалізувати всі описані в цій статті налаштування. Удачі в управлінні вашими серверами!

Масштабуйте ваш SFTP з хмарними інстансами

Потрібно більше гнучкості та потужності? Наші хмарні інстанси пропонують масштабованість для ваших SFTP-потреб.

Почати з хмари →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.