принудительная команда ssh: только sftp / scp

Цель: доступ только по sftp / scp, без необходимости для пользователей Linux.

Я хочу предоставить 10 sftp / scp справочники до 10 человек. Позволять' я называю эту «виртуальную учетную запись»

Я не хочу создавать пользователей Linux для каждого из них.

Я хотел бы создать одного пользователя Linux (backup_user). В его домашнем каталоге будет 10 каталогов. Для каждой «виртуальной учетной записи» один каталог.

Каждая виртуальная учетная запись должна видеть только свои собственные файлы, а не файлы из другой виртуальной учетной записи.

Я хотел бы использовать решение, представленное здесь: https : //serverfault.com/a/88864/90324

Короче говоря, в файле authorized_keys будет 10 строк:

~backup_user/.ssh/authorized_keys:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=\
    "scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...

Я мог бы улучшить это с помощью скрипта python и не использовать жестко запрограммированный "scp -v .. . ".

Я хотел бы поддержать scp и sftp.

Есть ли способ chroot, чтобы гарантировать, что каждая виртуальная учетная запись не сможет вырваться из его тюрьмы?

BTW: Идея с authorized_keys и" принудительная команда " это просто моя текущая стратегия. Если есть лучший способ достичь каждой из общих целей, скажите, пожалуйста: -)

Мы используем сервер OpenSSH. Я хотел бы, если возможно, придерживаться его.

Обновление

Мы нашли другое решение: http. Мы разработали небольшой универсальный загрузчик файлов http: https://github.com/guettli/tbzuploader Обратная связь приветствуется

1
задан 9 October 2017 в 18:38
4 ответа

Это должен быть комментарий, но он немного длинный.

Вы не смогли адекватно описать свою цель. Хотя я могу сделать некоторые выводы, экстраполировать это на предложение было бы бесполезно.

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

Было бы гораздо проще настроить 10 пользователи с паролем ключей и без доступа к оболочке. Но ваше единственное четко сформулированное ограничение состоит в том, что «не хотите создавать пользователей Linux для каждого из них», но вы не объясняете, почему. OTOH вы заявляете, что хотите использовать метод, основанный на инициализации пользователей в ОС.

3
ответ дан 3 December 2019 в 16:25

Я думаю, что то, что вы хотите (доступ без создания локального пользователя), невозможно с sshd.

Вместо этого вы можете использовать proftpd с виртуальным пользователи (например, из базы данных MySQL) + модуль SFTP / SCP.

3
ответ дан 3 December 2019 в 16:25

То, что вы хотите сделать, более чем непросто. Если вы не хотите использовать самодельный инструмент chroot-Shoot-in-your-Foot, вы должны придерживаться встроенного chroot ssh, который, в свою очередь, ограничен домашним каталогом пользователя (% h) = или чем-то еще, что вы можно указать в sshd_config. По крайней мере, я не нашел способа установить каталог chroot в файле authorized_keys, который бы решил эту проблему.

Так что все зависит от того, что вы имеете в виду под фразой «Я не хочу создавать пользователей Linux для каждого из них» . Если вам просто не нужна запись в / etc / passwd, вы можете одним из способов, с помощью которых PAM сможет аутентифицировать «виртуальных» пользователей за вас. Вы можете использовать базу данных (излишек для 10 пользователей, конечно), использовать дополнительный файл, подобный passwd, например, файлы Berkley db. Эти виртуальные пользователи могут быть ограничены сервисом sftp или чем угодно. Если их виртуальные домашние каталоги настроены на предполагаемые подкаталоги пользователя backup_user, возможно, это то, что вам нужно. Ну - почти. Если вы укажете команду в authorized_keys, sftp будет запрашивать пароль - я думаю, вы этого не хотите.

Если каждый из ваших 10 пользователей использует 2 ключа ssh, один для scp и один для sftp, это сработает. Однако вы должны имитировать поведение удаленного scp, указав сценарий в файле authorized_keys, который считывает переменную среды SSH_ORIGINAL_COMMAND. В любом случае, немного неудобно.

1
ответ дан 3 December 2019 в 16:25

ssh व्हायरल वापरकर्त्यांना समर्थन देत नाही. हे पीएएम मार्फत लागू केले जाऊ शकते, परंतु कोड लिहिणे आवश्यक आहे.

आपण स्थानिक वापरकर्ते जोडू शकत असाल तर आपण हे साधन वापरुन पाहू शकता

https://github.com/pymumu/jail- शेल [१२१० It] यात तुरूंगात जेल विशिष्ट निर्देशिकेत वापरकर्ता.

1
ответ дан 3 December 2019 в 16:25

Теги

Похожие вопросы