Comment puis-je configurer une rsync entre deux hôtes sans fournir de mot de passe?
Comment puis-je configurer une rsync entre deux hôtes sans fournir de mot de passe?
Réponses:
Voici l'article de The Geek Stuff :
1. Testez rsync sur ssh (avec mot de passe):
Effectuez une rsync pour vous assurer qu'il demande le mot de passe de votre compte sur le serveur distant et copie correctement les fichiers sur le serveur distant.
L'exemple suivant synchronisera le dossier local
/home/test
avec le dossier distant/backup/test
(sur le192.168.200.10
serveur).Cela devrait vous demander le mot de passe de votre compte sur le serveur distant.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen génère des clés.
Maintenant, configurez-le
ssh
pour qu'il ne demande pas de mot de passe lorsque vous effectuez ssh. Utilisezssh-keygen
sur le serveur local pour générer des clés publiques et privées.$ ssh-keygen
Entrez la phrase secrète (vide pour aucune phrase secrète):
Entrez à nouveau la même phrase secrète: Remarque: Lorsqu'il vous demande d'entrer la phrase secrète, appuyez simplement sur la touche Entrée et ne donnez aucun mot de passe ici.
3. ssh-copy-id copie la clé publique sur l'hôte distant
Utilisez
ssh-copy-id
, pour copier la clé publique sur l'hôte distant.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Remarque: ce qui précède demandera le mot de passe du compte d'utilisateur sur l'hôte distant et copiera automatiquement la clé publique à l'emplacement approprié. Si ssh-copy-id ne fonctionne pas pour vous, utilisez la méthode décrite ci-dessus pour configurer le mot de passe ssh sans connexion.
4. Effectuez rsync sur ssh sans mot de passe
Maintenant, vous devriez pouvoir passer à l'hôte distant sans entrer le mot de passe.
ssh user@192.168.200.10
Exécutez à nouveau le rsync, il ne devrait pas vous demander d'entrer un mot de passe cette fois.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Générer la clé publique dans ServerA
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
La clé publique sera générée et stockée dans
~/.ssh/id_rsa.pub
Copier la clé publique sur l'hôte distant
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
Ou
~/.ssh/authorized_keys
. Créez le fichier s'il n'existe pas. Assurez-vous que le mode de fichier est 700.Toutes ces suggestions rsync échouent en utilisant la dernière version en août 2017 sur Ubuntu 16.04 LTS. Pas un seul d'entre eux ne fonctionne.
Ils partagent également tous le défaut d'exiger un démon rsync exécuté sur le serveur de fichiers.
Cette réponse fonctionne avec un NAS Linux générique
VOICI LES ÉTAPES:
1) UTILISEZ rsync comme indiqué ci-dessous. (dans un répertoire sous / mnt ou / media que vous avez créé ou sur un périphérique que vous montez. peu importe lequel) 2) TRANSFÉRER des fichiers AVEC scp comme indiqué ci-dessous. FileZilla fonctionnera également.
Tout cela (sauf FileZilla) peut fonctionner en cron sans mot de passe.
Cette configuration fonctionne très bien. La seule fois où vous avez besoin du mot de passe, c'est lorsque vous configurez le ssh-copy-id initial pour configurer les connexions sans mot de passe RSA. Ensuite, vous le programmez une fois dans FileZilla. Après cela, jour après jour, aucune invite de mot de passe ne se produit. C'est facile. Et la meilleure partie est que vous pouvez utiliser tous les avantages du programme rsync.
Cette réponse explique comment utiliser rsync lui-même sans mot de passe.
De plus, il n'est pas nécessaire d'installer un autre démon (rsync) sur l'un ou l'autre système.
Si vous ne l'avez pas déjà fait, procédez comme suit:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
et testez-le avec ceci:
ssh NASserver
et peut-être quelque chose comme ça:
scp myfile myusername@NASserver:Documents
J'ai un deuxième disque dur, donc j'utilise rsync pour copier le disque de démarrage dans un sous-répertoire sur sdb1 (monté sous / mnt et exclu de rsync).
Si vous ne disposez pas d'un disque dur physique et que vous disposez de suffisamment d'espace disponible, créez simplement un sous-répertoire sous / mnt (ou / media) et utilisez-le.
Tant que le répertoire est exclu, peu importe qu'il se trouve sur un lecteur séparé ou non.
Voici le script de sauvegarde:
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
APRÈS la rsync, utilisez un script:
Je crée toujours un nouveau répertoire sur le serveur NAS cible: / mnt / fullsys / mysystem afin que seuls les fichiers pertinents soient transférés.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
Voila! Cela prend un certain temps mais c'est fait.
Les deux scripts peuvent fonctionner correctement dans cron.
L'alternative est d'utiliser FileZilla pour lui envoyer le serveur NAS manuellement.
Puisqu'il peut y avoir des suppressions, j'ai toujours
make a new directory and enter it
via FileZilla sur le disque dur cible de 1 To afin que seuls les fichiers pertinents soient transférés.
Ce n'est que lorsque le transfert est terminé que je supprime l'ancienne version.
Voila. Succès.
marquer l'utilisateur dans l'adresse serait mieux
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
alors tout le excludes
et --delete
etc. Je ne l'ai pas encore fait fonctionner mais c'est le plus proche que j'ai vu. Soi-disant, vous devez le faire même si vous le pouvez déjà ssh
et scp
sur le serveur cible, et le démon rsync doit être en cours d'exécution car il n'utilise pas le format sftp normal. Je suis toujours à la recherche.