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

19

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


la source
Cela devrait être très utile: blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom
Maverick143 a fourni une réponse, mais cette question n'appartient pas vraiment à StackOverflow car elle a peu à voir avec la programmation. SuperUser.com aurait été plus pertinent.
Martin

Réponses:

30

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 le 192.168.200.10serveur).

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-le sshpour qu'il ne demande pas de mot de passe lorsque vous effectuez ssh. Utilisez ssh-keygensur 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 [email protected]

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 [email protected]

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/ [email protected]:/backup/test/
MangeshBiradar
la source
Cela aide bien mieux. troy.jdmz.net/rsync/index.html
MangeshBiradar
5
Effacez le copier-coller de thegeekstuff.com/2011/07/07/rsync-over-ssh-without-password, vous devez faire référence à l'auteur d'origine.
Lawrence Cherone
Si vous devez utiliser un autre utilisateur, vous pouvez le faire lorsque vous exécutez le ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected]
Finni McFinger
1

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.
Johny
la source
0

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 itvia 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.

SDsolar
la source
-1

marquer l'utilisateur dans l'adresse serait mieux

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
DreamAndDead
la source
2
Bien que cela puisse répondre à la question, ce serait une meilleure réponse si vous pouviez expliquer pourquoi .
DavidPostill
Aussi la syntaxe. Je crois que cela est utilisé comme une substitution de commande quelque chose comme ça: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)alors tout le excludeset --deleteetc. 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à sshet scpsur 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.
SDsolar