Вопрос или проблема
Я запускаю OpenSSH64 в среде Windows 2012. OpenSSH64 работает, и я могу получить доступ к серверу. Я изменил файл sshd_config
без успеха.
Я внес следующие изменения:
Subsystem sftp C:\OpenSSH-Win64\sftp-server.exe
Match User sftponly-user
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory %h
Я также пробовал
ChrootDirectory C:\User_Specific_Directory\
Мы пытаемся генерировать логи, чтобы проверить, что изменения, которые мы вносим в файл sshd_config
, применяются. Однако в логе мы получаем следующую ошибку:
3784 11:00:17 087 error: accept: Операция завершена успешно.
У кого-нибудь есть рабочий пример chroot
для пользователя в конкретной директории?
Эта функция не была реализована в OpenSSH для Windows (в основном потому, что это сложно): https://github.com/PowerShell/Win32-OpenSSH/issues/190
Расположение файла конфигурации OpenSSH по умолчанию: C:\ProgramData\ssh
Имя файла: ssh_config
Match User <windows_login_user_name>
ChrootDirectory C:\0-Websites\myapp.com
X11Forwarding no
PermitTTY no
AllowTcpForwarding no
ForceCommand sftp-server.exe
ЗАМЕТКА: Все имена пользователей должны быть написаны с маленькой буквы.
Ответ или решение
Реализация chroot каталога для SFTP пользователей в OpenSSH64 на Windows 2012
Введение
Настройка ограничивающего каталога (chroot) для пользователей SFTP в OpenSSH64 может быть сложной задачей, особенно в средах Windows. На данный момент поддержка данной функции в OpenSSH для Windows не является полной. В этой статье мы рассмотрим, что такое chroot и как его настроить, а также возможные проблемы и их решения.
Что такое Chroot?
Chroot (изменение корневого каталога) — это метод, который позволяет изолировать процессы в отдельной файловой системе. Это означает, что пользователь, который подключается к серверу SFTP, будет ограничен доступом только к определенному каталогу и не сможет выйти за его пределы.
Настройка Chroot в OpenSSH64
Для реализации chroot для SFTP пользователей, необходимо внести изменения в файл конфигурации sshd_config
. Предположим, вы хотите создать пользователя sftponly-user
, который будет ограничен каталогом C:\User_Specific_Directory\
.
Шаги настройки:
-
Откройте файл конфигурации:
Файл конфигурации OpenSSH на Windows обычно находится по пути:
C:\ProgramData\ssh\sshd_config
-
Измените настройки в sshd_config:
В вашем файле
sshd_config
добавьте или измените следующие строки:Subsystem sftp C:\OpenSSH-Win64\sftp-server.exe Match User sftponly-user ChrootDirectory C:\User_Specific_Directory\ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Обратите внимание, что для правильной работы chroot важно, чтобы указанный каталог (в данном случае
C:\User_Specific_Directory\
) имел корректные права доступа. Chroot каталог должен принадлежать пользователю, которому он предназначен, или быть доступным только для администратора. -
Права доступа:
Убедитесь, что права доступа к каталогу настроены правильно. Chroot каталог не должен быть доступен для записи пользователю (sftponly-user), так как OpenSSH требует, чтобы родительский каталог не был записываемым. Для этого можно выполнить команду в командной строке от имени администратора:
icacls "C:\User_Specific_Directory" /reset icacls "C:\User_Specific_Directory" /inheritance:r icacls "C:\User_Specific_Directory" /grant:r "<YOUR-USERNAME>:(OI)(CI)F"
Убедитесь, что у вас есть соответствующие разрешения.
-
Перезапустите службу SSH:
После внесения всех изменений необходимо перезапустить службу OpenSSH, чтобы обновить настройки:
net stop sshd net start sshd
Проверка логов
Для генерации логов, которые помогут вам отследить изменения и ошибки, откройте файл журнала /var/log/auth.log
. Также убедитесь, что включена директива LogLevel
в sshd_config
, чтобы детализировать записи:
LogLevel VERBOSE
После перезагрузки службы, попробуйте подключиться с помощью SFTP и проверьте, отображаются ли какие-либо ошибки в журналах.
Возможные проблемы и их решения
-
Ошибка в логах:
Если вы видите ошибки, такие как:3784 11:00:17 087 error: accept: The operation completed successfully.
Это означает, что функция chroot для SFTP на данный момент может быть не полностью поддерживаемой в используемой версии OpenSSH для Windows. Обратитесь к документации GitHub для получения дополнительной информации о текущих ограничениях.
-
Пользователь не может подключиться:
Убедитесь, что права доступа к chroot каталогу настроены корректно (как было описано выше).
Заключение
Настройка chroot для SFTP пользователей в OpenSSH64 на Windows 2012 может быть непростой задачей из-за ограничений текущей реализации. Следуйте всем шагам выше, чтобы минимизировать возможные проблемы. В случае возникновения ошибок используйте журналы для диагностики и обратитесь к документации и сообществу для получения дополнительной помощи.