Во-первых, я новичок в этих вещах, поэтому мой технический словарный запас может быть не на одном уровне со всеми.
Я создал сервер Windows 2016 и успешно установил SFTP-сервер OpenSSH. К сожалению, когда я вхожу в систему под своим пользователем SFTP, я могу получить доступ ко всем папкам на диске C. Я погуглил и понял, что это потому, что для этого пользователя нет ограничений.
Я гуглил несколько часов и наткнулся на много статей, но меня это смущает. Похоже, что у OpenSSH нет простого способа контролировать ограничение папки для указания пользователя, и есть несколько способов сделать это - установить политику группы пользователей напрямую на сервере Windows (не могу найти статью об этом), загрузите Cygwin, используйте другое программное обеспечение сервера SFTP, обходной путь с файлом конфигурации сервера OpenSSH. Откровенно говоря, я не знаю, что использовать или следовать.
Мой конечный результат - разрешить 1 пользователю иметь 1 доступ к папке в FTP_Folder (корневая папка). Например, User1 может получить доступ только к папке Site1, а User2 может получить доступ только к папке Site2. Папки Site1 и Site2 хранятся в корневой папке FTP_Folder.
Какой подход лучше?
Вы, скорее всего, ищете chroot
эквивалент ChrootDirectory
в твоем %programdata%\ssh\sshd_config
файл.
Эта директива поддерживается только с сеансами sftp, что, как мне кажется, именно то, что вам нужно. Удаленный сеанс (SSH) на сервере (cmd.exe
Одер powershell.exe
) бы не почитай это.
Чтобы настроить chroot-сервер только для sftp, установите ForceCommand
к internal-sftp
. Вы также можете настроить scp с помощью chroot, реализовав специальную оболочку, которая будет разрешать только scp и sftp.
Чтобы сделать это просто:
subsystem sftp internal-sftp
в ваш sshd_config (или измените его)ChrootDirectory
в sshd_config
Вот так, например:
Match Group myfriendlyusergroup
ChrootDirectory /myfriendlyusergroupshomedirectory
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp