J'essaie de configurer un serveur de sauvegarde. Je veux chrooter chaque utilisateur (client) dans son répertoire personnel et lui permettre uniquement d'utiliser sftp et rsync .
J'ai rapidement découvert que je n'étais pas le seul à essayer de faire quelque chose comme ça, et j'ai trouvé ce guide et l' ai suivi. Alors maintenant, je n'ai que des utilisateurs chrootés avec sftp.
Ensuite, j'ai découvert que rsync a besoin de ssh pour se reproduire sur l'autre machine, et que sftp n'est pas suffisant. Donner à chaque utilisateur une connexion ssh est quelque chose que je voulais éviter en premier lieu.
Quelqu'un peut-il penser à des solutions possibles?
Merci,
marque
Réponses:
Une solution sftp nécessiterait également une connexion ssh pour tout le monde, donc vous n'avez vraiment rien perdu ici. Accorder l'accès ssh n'implique pas nécessairement un accès shell complet, par exemple, cela montre comment utiliser le
authorized_keys
fichier ssh pour permettre la sauvegarde via rsync tout en limitant les commandes disponibles au récepteur rsync uniquement .En fait, si vous optez pour l'authentification par clé, plutôt que l'authentification par mot de passe (ce que vous devriez), vous pouvez alors tout exécuter sous un seul compte d'utilisateur au lieu d'exiger plusieurs comptes. Vous utiliseriez des clés pour identifier les utilisateurs distants et dirigeriez le récepteur rsync vers un répertoire particulier.
Quelque chose comme ça, dans votre
authorized_keys
fichier:Une personne utilisant la
user1
clé privée effectuera une sauvegarde dans/tmp/user1
, et une personne utilisant lauser2
clé privée effectuera une sauvegarde dans/tmp/user2
. Et ainsi de suite...la source
Exécutez l'habituel
rsync
du client au serveur distant, mais ajoutez un commutateur verbeux supplémentaire:,SSH -v
puis grep forSending command
. Vous verrez la commande exacte que le client envoie au serveur distant:Dans mon cas, c'était
Ajoutez ceci
command="..."
au/home/USER/.ssh/authorized_keys
fichier du serveur distant comme @larsks l'a mentionné. Ajoutez des paramètres de sécurité supplémentaires, si nécessaire:no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
Tous ensemble:
(Tiré d'un très bon tutoriel http://en.positon.org/post/Rsync-command-restriction-over-SSH )
la source
Vous devrez fournir une forme d'accès au shell pour pouvoir utiliser rsync à moins que vous vous connectiez directement au serveur rsync - le port par défaut est 873 (TCP).
Depuis la page de manuel de rysnc :
Pour fournir un accès shell limité, consultez le guide suivant . (Remarque: le lien d'origine est mort) Résumé:
Ou jetez un œil à l'utilisation de rssh (il y a un guide pour configurer rssh ici ):
la source
rrsync
au lieu de rssh, inclus dans le package rsync officiel. Voir derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotvous pouvez écrire un shell qui encapsule rsync.
regardez l'idée générale ici: https://sixohthree.com/1458/locking-down-rsync-using-ssh
dans votre enveloppe, vous pouvez faire ce que vous voulez et peut-être chrooter l'utilisateur.
Dans mon cas, j'avais besoin d'activer le compte virtuel en utilisant le même utilisateur * nix. J'arrive à le faire en utilisant ce type de shell et de nombreuses lignes dans le fichier authorized_keys. Je n'ai pas chrooté l'utilisateur mais j'ai ajouté un niveau de dossier utilisateur dans la commande du serveur rsync.
regarder différemment l'utilisateur du processus à l'aide de la clé ssh
la source
SFTP avec capacités Rsync, sans shell
Vous pouvez utiliser LFTP + SFTP dans un environnement chroot et obtenir les mêmes résultats que l'utilisation de rsync, sans fournir à l'utilisateur un shell ou effectuer de personnalisations lourdes dans ssh avec des wrappers.
Ceci est plus sûr et peut être considérablement plus rapide.
la source
Rsync dans chroot est délicat :) Vous devrez configurer un environnement minimal pour / bin / sh et / usr / bin / rsync dans le répertoire chrooté (côté destination) pour que cela fonctionne.
Voir l'article entier ici, la configuration de l'environnement rsync est à la fin
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5
la source