- Home »

Как включить SFTP без доступа к shell на Ubuntu 24.04
В этой статье обсуждается, как настроить SFTP-доступ на Ubuntu 24.04 для пользователей без возможности входа в shell. Это важно, когда хочется дать кому-то возможность закидывать файлы на сервер, но не хочется переживать, что они смогут что-то напортачить через терминал. Актуально для владельцев сайтов, дизайнеров, автоматизации деплоев, бэкапов/логов и просто “делегирования рутины”. Всё просто, быстро, безопасно!
Как работает SFTP без shell?
- SFTP — это безопасный протокол передачи файлов, работающий поверх SSH.
- Обычно пользователи SFTP получают shell-доступ по умолчанию, но с помощью
sshd
можно разрешить только файловые операции, запретив запуск команд. - Обеспечивается удобный и безопасный способ “залить/выкачать” что-то на сервер через SCP/SFTP-клиенты.
Быстрая настройка: шаг за шагом
- Установить OpenSSH (скорее всего, у тебя уже есть):
sudo apt update && sudo apt install openssh-server
- Создать пользователя без shell-доступа (например,
sftpuser
):
sudo adduser --shell /usr/sbin/nologin --home /home/sftpuser sftpuser
Задать пароль, остальное можно пропустить.
NB: /usr/sbin/nologin — специальная программа, блокирующая shell-доступ. - Создать папку для файлов:
sudo mkdir -p /home/sftpuser/files
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo chown sftpuser:sftpuser /home/sftpuser/files - Настроить
/etc/ssh/sshd_config
:
Subsystem sftp internal-sftpMatch User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
- Match User sftpuser — ограничивает правила для конкретного пользователя.
- ChrootDirectory /home/sftpuser — “зажимает” пользователя в домашней папке, выше не вылезет.
- ForceCommand internal-sftp — запуск только встроенного sftp, никаких башей.
- Перезапустить sshd:
sudo systemctl restart sshd
Сравнение режимов SFTP-доступа
Режим | Shell-доступ | Изоляция | Безопасность | Использование |
---|---|---|---|---|
Обычный пользователь | Есть | Нет | Средняя | Админы, power-users |
SFTP без shell (через internal-sftp + chroot) | Нет | Да (chroot) | Максимальная | Дизайнеры, веб-мастера, автоматизация |
FTP/FTPS сторонний (vsftpd, proftpd) | Нет | Ограниченно | Ниже (FTP хуже шифрует) | Наследие, массовый хостинг |
Примеры и кейсы
- Положительный: SFTP-доступ для upload файлов на сайт, дизайнер не может зайти в shell, всё работает, безопасно.
- Отрицательный: Если забыть про chroot или права на папку — sftpuser не сможет ничего делать (ошибка “Permission denied”). Следи за
ls -l /home/sftpuser
! - Автоматизация: Скрипты баккапа могут по sftp класть/забирать файлы прямо из chroot-каталога.
Полезные команды
# Проверить пользователя и shell:
getent passwd sftpuser
# Проверить статус sshd:
sudo systemctl status sshd
# Проверить права на папки:
sudo ls -ld /home/sftpuser /home/sftpuser/files
Похожие решения и альтернативы
- vsftpd, proftpd — классика мира FTP (меньше шифрования, но больше “олдскульности”).
- rclone serve sftp — быстро поднять SFTP над папкой для тестов (но для продакшена не советую!). Официальный гайд
- OpenSSH SFTP + ключи — к доступу можно добавить авторизацию по ssh-ключу без паролей (ещё безопаснее).
Интересные факты и идеи для использования
- Через такой SFTP можно быстро интегрировать загрузку логов или отчётов из 1С, CRM, сканеров — любой автоматизации файлов.
- Можно нарезать десятки пользователей с разными chroot-каталогами — каждый видит только свой “балкон”.
- Работает с большинством WinSCP, FileZilla, Cyberduck, scp — синергия out of the box.
- Отличный лайфхак — даёшь клиенту ДОСТУП к папке, но не к серверу.
Возможности для автоматизации и скриптов
- Деплой статики или медиафайлов на сайт через bash/python без риска “сломать систему”.
- Скрипты бэкапа или выгрузки данных по расписанию (cron + sftp).
- Интеграция с облаками и CI/CD (Gitea/Drone уже дружат с sftp).
Выводы — когда использовать и почему
Режим SFTP без shell — оптимальный выбор, если нужно делегировать права на загрузку файлов, не открывая дверь в сервер полностью. Этот способ хорош для хостинга сайтов, автоматизации резервных копий, интеграции с внешними сервисами (безопаснее, проще, удобнее). Гибко, нативно, без установки сторонних FTP-серверов. Заказ VPS (для ручной настройки) — здесь. Если нужна максимальная мощность — тут.
- OpenSSH встроен в Ubuntu, сильно облегчает жизнь.
- Возможность задать chroot, shell, права — гибкая конфигурация.
- Полная статистика и мониторинг логов через /var/log/auth.log.
Ну и напоследок: не забывай тестировать доступ от имени нового пользователя, чтобы не возникло сюрпризов. SFTP — твой друг в мире “минимальных” прав!
Полезные ссылки:
Ubuntu SSH Guide
sshd_config man
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.