Я пытаюсь настроить резервный сервер. Я хочу привязать каждого пользователя (клиента) к своему домашнему каталогу и разрешить ему использовать только sftp и rsync .
Я быстро обнаружил, что я не единственный, кто пытается сделать что-то подобное, и я нашел это руководство и следовал ему. Так что теперь у меня есть chroot'd пользователи только с sftp.
Затем я обнаружил, что rsync нуждается в ssh для порождения себя на другой машине, и что sftp недостаточно. Предоставление каждому пользователю ssh логина - это то, чего я в первую очередь хотел избежать.
Кто-нибудь может придумать какие-нибудь возможные решения?
Спасибо,
отметка
Ответы:
Решение sftp также потребует ssh-входа для всех, так что вы здесь ничего не потеряли. Предоставление доступа по ssh не обязательно подразумевает полный доступ к оболочке, например, это показывает, как использовать
authorized_keys
файл ssh, чтобы разрешить резервное копирование через rsync, ограничивая доступные команды только получателем rsync.На самом деле, если вы выбираете аутентификацию на основе ключей, а не аутентификацию по паролю (что вам следует), вы можете запустить все под одной учетной записью пользователя, вместо того, чтобы требовать нескольких учетных записей. Вы будете использовать ключи для идентификации удаленных пользователей и направлять получателя rsync в конкретный каталог.
Примерно так, в вашем
authorized_keys
файле:Кто-то, использующий
user1
закрытый ключ, будет выполнять резервное копирование/tmp/user1
, а кто-то, использующийuser2
закрытый ключ, будет делать резервную копию/tmp/user2
. И так далее...источник
Выполните обычное
rsync
с клиента на удаленный сервер, но добавьте дополнительный подробный ключ:,SSH -v
затем grep дляSending command
. Вы увидите точную команду, которую клиент отправляет на удаленный сервер:В моем случае это было
Добавьте это как
command="..."
к/home/USER/.ssh/authorized_keys
файлу удаленного сервера, как упомянуто @larsks. Добавьте дополнительные настройки безопасности, если необходимо:no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
Все вместе:
(Взято из очень хорошего учебника http://en.positon.org/post/Rsync-command-restriction-over-SSH )
источник
Вам понадобится предоставить некоторую форму доступа к оболочке, чтобы иметь возможность использовать rsync, если вы не подключаетесь напрямую к серверу rsync - порт по умолчанию - 873 (TCP).
Со страницы руководства rysnc :
Чтобы обеспечить ограниченный доступ к оболочке, рассмотрите следующее руководство . (Примечание: исходная ссылка не работает)
Или рассмотрим использование rssh (есть руководство по настройке rssh здесь ):
источник
rrsync
вместо rssh, включенный в официальный пакет rsync. См. Derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotВы можете написать оболочку, которая упаковывает rsync.
посмотрите на общую идею здесь: https://sixohthree.com/1458/locking-down-rsync-using-ssh
в своей оболочке вы можете делать то, что вы хотите, и, возможно, выполнять поиск пользователя.
В моем случае мне нужно было включить виртуальную учетную запись, используя того же пользователя * nix. Мне удается сделать это с помощью этого вида оболочки плюс много строк в файле авторизованных_ключей. У меня нет chroot пользователя, но я добавил уровень папки пользователя в команде сервера rsync.
посмотрите на пользователя процесса по-другому, используя ключ ssh
источник
SFTP с возможностями Rsync, без оболочки
Вы можете использовать LFTP + SFTP в среде chroot и достичь тех же результатов, что и при использовании rsync, без предоставления пользователю оболочки или каких-либо сложных настроек в ssh с помощью оболочек.
Это более безопасно и может быть значительно быстрее.
источник
Rsync в chroot сложно :) Вам нужно будет установить минимальное окружение для / bin / sh и / usr / bin / rsync в каталоге chrooted (на стороне назначения), чтобы он работал.
См. Всю статью здесь, к концу настройки rsync-среды
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5
источник