comment utiliser rsync (en utilisant password-less ssh), avec sudo juste du côté local?

Cette command fonctionne bien pour moi avec ssh sans mot de passe:

rsync -aqve ssh ${user}@${remote_host}:/etc/bind /tmp/etc/bind 

Puisque je voudrais rsync directement à mon propre local / etc / bind avec les permissions root, j'ai essayé:

 sudo rsync -aqve ssh ${user}@${remote_host}:/etc/bind /etc/bind 

Mais maintenant, je reçois une invite de mot de passe (c'est mauvais).

Comment puis-je corriger cette ligne pour copyr directement sur mon local / etc / bind sans invite de mot de passe?

Lorsque vous faites cela avec votre propre user, vous utilisez les keys SSH dans votre propre directory $HOME/.ssh/ . Quand vous le faites en tant que root en utilisant sudo , ssh cherchera dans le directory racine du directory .ssh – et vos keys ne sont pas là.

Voici quatre façons de résoudre ce problème – l'un d'eux devrait fonctionner:

  1. En tant que root, créez de nouvelles keys ssh et ajoutez la partie publique aux authorized_keys pour votre user sur le server distant
  2. Copiez vos propres keys SSH dans le directory .ssh la racine. (Assurez-vous de ne pas écraser les keys existantes!)
  3. Donnez à votre propre user un access en écriture au directory cible. Considérez les implications de security avant de choisir cette méthode!
  4. Comme le dit Chris Down, utilisez vos keys SSH existantes en utilisant la command

     $ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \ ${user}@${remote_host}:/etc/bind /etc/bind