хорошо... прокрученный мое собственное.
Сделанный маленьким приложением услуг .NET, которое делает, что я описал. С некоторыми уведомлениями о системном журнале и возможностью уведомить людей по SMS в случае обработок отказа.
Я буду видеть и пытаться заставить его на codeplex или SourceForge для других использовать/полагаться
Когда это произойдет, я отправлю URL здесь в комментариях
Вы испытываете необходимость для обеспечения некоторой формы доступа оболочки, чтобы смочь использовать rsync, если Вы не соединяетесь непосредственно с rsync сервером - порт по умолчанию 873 (TCP).
Из rysnc страницы справочника:
Существует два различных пути к rsync для контакта с удаленной системой: использование удаленной программной оболочки как транспорт (такой как ssh или rsh) или контакт с rsync демоном непосредственно через TCP. Транспорт удаленной оболочки используется каждый раз, когда источник или целевой путь содержат единственное двоеточие (:) разделитель после спецификации хоста. Контакт с rsync демоном непосредственно происходит, когда источник или целевой путь содержат двойное двоеточие (: :) разделитель после спецификации хоста, ИЛИ когда rsync://URL будет указан (см. также lqUSING раздел RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTIONrq для исключения к этому последнему правилу).
Для обеспечения ограниченного доступа оболочки рассмотрите следующее руководство. (Отметьте: исходная ссылка является битой), Сводка:
Эта установка сочетает лучшие функции от rsync, SSH и chroot. Rsync обеспечивает гибкость и эффективность в передаче файлов, SSH защищает данные, переданные, и chroot защищает данные по серверу от несанкционированного доступа. dummysh ограничивает доступ к rsync только.
В то время как rsync сервер реализует chroot, он испытывает недостаток в защите SSH, которая часто требуется. Кроме того, открытие дополнительного rsync порта сервера представляет угрозу безопасности и иногда не возможно или технически или с политической точки зрения. Sftp и scp испытывают недостаток в гибкости и эффективности, обеспеченной rsync, особенно когда дерево каталогов включено, такие как веб-сайт.
Или смотрите на использование rssh (существует руководство по установке rssh здесь):
rssh является ограниченной оболочкой для использования с OpenSSH, позволяя только scp и/или sftp. Это теперь также включает поддержку rdist, rsync, и cvs. Например, если у Вас есть сервер, из которого Вы только хотите позволить пользователям копировать файлы прочь через scp, не обеспечивая доступ оболочки, можно использовать rssh, чтобы сделать это.
sftp решение также потребовало бы входа в систему ssh для всех, таким образом, Вы ничего действительно не потеряли здесь. Предоставление ssh доступ не обязательно подразумевает полный доступ оболочки, например, это показывает, как использовать ssh authorized_keys
файл для разрешения резервного копирования через rsync при ограничении доступных команд просто rsync получателем.
На самом деле, если Вы выбираете основанную на ключе аутентификацию, а не аутентификацию по паролю (который Вы должны), Вы могли затем выполнить все под одной учетной записью пользователя вместо того, чтобы требовать нескольких учетных записей. Вы использовали бы ключи, чтобы идентифицировать удаленных пользователей и направить rsync получатель на конкретный каталог.
Что-то вроде этого, в Вашем authorized_keys
файл:
command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1
command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2
Кто-то использующий user1
закрытый ключ скопирует в /tmp/user1
, и кто-то использующий user2
закрытый ключ скопирует в /tmp/user2
. И т.д...
Выполнить обычный rsync
от клиента к удаленному серверу, но добавить дополнительный подробный переключатель: SSH -v
, затем grep для Отправка команды
.
Вы увидите точную команду, которую клиент отправляет на удаленный сервер:
rsync -avz -e'ssh -v -i /ssh-keys/clientprivate.key' --bwlimit=8000 --delete root@server:/path/ /backup/myserver/ 2>&1 | grep "Sending command"
В моем случае это было
rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /path
Добавьте это как 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
Все вместе:
command="rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /backup/path",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.
посмотрите общую идею здесь: https://sixohthree.com/1458/locking-down-rsync-using- ssh
в оболочке оболочки вы можете делать все, что хотите, и, возможно, выполнять chroot пользователя.
В моем случае мне нужно было включить виртуальную учетную запись, используя того же пользователя * nix. Мне удается сделать это, используя такую оболочку плюс много строк в файле authorized_keys.Я не использовал chroot для пользователя, но я добавил уровень папки пользователя в команду rsync server.
посмотрите на пользователя процесса по-другому, используя ключ ssh
SFTP с возможностями Rsync, без оболочки
Вы можете использовать LFTP + SFTP в среде chroot и достичь тех же результатов, что и при использовании rsync, без предоставления пользователю оболочку или выполнение любых сложных настроек в ssh с помощью оберток.
Это более безопасно и может быть значительно быстрее.
Rsync в chroot - сложная задача :) Вы ' Мне нужно настроить минимальную среду для / bin / sh и / usr / bin / rsync в chrooted каталоге (на стороне назначения), чтобы он работал.
См. всю статью здесь, настройка rsync-environment выполняется конец
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5