web-dev-qa-db-fra.com

Comment configurer Rsync sans mot de passe avec SSH sous UNIX / Linux?

Comment puis-je configurer un rsync entre deux hôtes sans fournir de mot de passe?

11
user2010736

Vous trouverez ci-dessous l'article de The Geek Stuff :

1. Testez rsync sur ssh (avec mot de passe):

Effectuez une opération rsync pour vous assurer qu'elle demande le mot de passe de votre compte sur le serveur distant et copie correctement les fichiers sur le serveur distant.

L'exemple suivant synchronise le dossier local /home/test avec le dossier distant /backup/test (sur le serveur 192.168.200.10).

Cela devrait vous demander le mot de passe de votre compte sur le serveur distant.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/

2. ssh-keygen génère des clés.

Maintenant, configurez ssh afin qu’il ne demande pas de mot de passe lorsque vous exécutez ssh. Utilisez ssh-keygen sur le serveur local pour générer des clés publiques et privées.

$ ssh-keygen

Entrez mot de passe (vide pour aucun mot de passe):

Entrez à nouveau la même phrase secrète: Remarque: lorsqu'il vous est demandé de saisir 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 192.168.200.10

Remarque: Les informations ci-dessus vous demanderont le mot de passe de votre compte sur l'hôte distant et copieront automatiquement la clé publique à l'emplacement approprié. Si ssh-copy-id ne fonctionne pas pour vous, utilisez la méthode décrite plus haut pour configurer ssh avec un mot de passe moins le login.

4. Effectuez rsync sur ssh sans mot de passe

Maintenant, vous devriez pouvoir ssh sur l'hôte distant sans entrer le mot de passe.

ssh 192.168.200.10

Exécutez à nouveau le rsync, il ne devrait pas vous demander de saisir un mot de passe cette fois-ci.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
21
MangeshBiradar

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

  • Ouvrez id_rsa.pub, copiez le contenu
  • Connectez-vous à ServerB en utilisant le même utilisateur dans la commande rsync
  • Dans ServerB, ajoutez le contenu à ~/.ssh/authorized_keys. Créez le fichier s'il n'existe pas. Assurez-vous que le mode de fichier est 700.
1
Johny

Toutes ces suggestions rsync n'utilisent pas la dernière version d'août 2017 sur Ubuntu 16.04 LTS. Pas un seul d'entre eux ne travaille.

Ils ont également tous en commun le fait qu’un démon rsync doit être 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. (vers un répertoire sous/mnt ou/media que vous avez créé ou sur un périphérique que vous montez. peu importe lequel) 2) TRANSFERER des fichiers AVEC scp comme indiqué ci-dessous. FileZilla fonctionnera aussi.

Tout cela (sauf FileZilla) peut fonctionner dans cron sans mot de passe.


Cette configuration fonctionne très bien. Le seul mot de passe requis est le moment où vous configurez le ssh-copy-id initial pour configurer les connexions RSA sans mot de passe. 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, faites ceci:

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver

et le tester 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 lecteur d'amorçage 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, créez simplement un sous-répertoire sous/mnt (ou/media) et utilisez-le.

Tant que le répertoire est exclu, peu importe s'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

APRES la rsync utiliser 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 du temps, mais ensuite c'est fait.

Les deux scripts peuvent fonctionner correctement dans cron.


L'alternative consiste à 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.

Lorsque le transfert est terminé, je supprime l'ancienne version.

Voilà. Succès.

0
SDsolar