Вопрос или проблема
Я использую sftp-server для доступа к своему серверу как root. Теперь я пытаюсь настроить ограниченный доступ для внешних пользователей только для загрузки файлов с помощью SFTP. Существует множество руководств о том, как это настроить с внутренним sftp. Моя проблема в том, что когда я изменяю подсистему на internal-sftp, я теряю свой существующий SFTP-доступ. Есть ли способ изменить мою текущую настройку на internal-sftp или как-то использовать оба варианта?
Ответ или решение
Введение в использование sftp-server и internal-sftp
При конфигурации доступа к вашему серверу через SFTP, вы можете столкнуться с необходимостью разделения прав доступа для различных пользователей. Ваша текущая настройка использует sftp-server
, что позволяет вам получать доступ к серверу в качестве корневого пользователя. Однако возникла необходимость ограничить доступ к серверу для внешних пользователей, предоставив им возможность только загружать файлы с использованием SFTP. Это можно сделать с помощью internal-sftp
.
Основные отличия между sftp-server и internal-sftp
-
sftp-server: Это стандартная реализация SFTP, которая позволяет пользователям выполнять полные операции просмотра и управления файлами. При использовании этой подсистемы вы получаете доступ к полному набору возможностей SSH.
-
internal-sftp: Это альтернатива, предназначенная для более ограниченного доступа, в частности, для целей, связанных с безопасностью. Эта реализация SFTP запускается в контексте SSH-сессии и ограничивает действия пользователей, что делает ее идеальной для вашей задачи.
Проблемы c использованием internal-sftp
Как вы правильно отметили, при изменении подконтроля (subsystem) на internal-sftp
вы теряете доступ как корневой пользователь через SFTP. Это происходит потому, что internal-sftp
работает в режиме, который не поддерживает все функции стандартного sftp-server
.
Возможные пути решения проблемы
-
Дублирование конфигурации:
- Вы можете настроить
internal-sftp
для нескольких пользователей, создав отдельные группы (например,sftpusers
), которые будут иметь ограниченный доступ. Параметры конфигурации могут выглядеть следующим образом:Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
- Вы можете настроить
-
Использование разных конфигурационных файлов:
- Если ваша цель состоит в том, чтобы использовать обе подсистемы одновременно, можно сделать это с помощью двух различных конфигурационных файлов. Вы можете использовать
sftp-server
для корневого пользователя, аinternal-sftp
для ограниченных пользователей. Нужно настроить SSH-сервер таким образом, чтобы он проверял тип пользователя:Subsystem sftp /usr/lib/openssh/sftp-server Match User restricteduser ChrootDirectory /home/restricteduser ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
- Если ваша цель состоит в том, чтобы использовать обе подсистемы одновременно, можно сделать это с помощью двух различных конфигурационных файлов. Вы можете использовать
-
Настройка нескольких установок:
- В некоторых системах вы можете установить несколько экземпляров OpenSSH с уникальными конфигурациями. Однако это может создать дополнительные сложности в управлении и обновлении.
Заключение
Выбор между sftp-server
и internal-sftp
зависит от ваших потребностей в безопасности и управлении доступом. Путём правильной настройки SSH-сервера можно достичь желаемого уровня безопасности, сохраняя при этом полноценный доступ для администраторов. Убедитесь, что вы тщательно протестировали ваши настройки, чтобы избежать уязвимостей, и соблюдайте лучшие практики безопасности при работе с SFTP.