web-dev-qa-db-fra.com

Comment utiliser rsync via ssh avec des mots de passe clés rsa?

Comment utiliser rsync avec des phrases de passe? Toutes les "solutions" recherchées sur Google que j'ai trouvées utilisent des clés sans phrase secrète, ce qui ne semble pas une véritable option.

je suis en cours d'exécution 2 serveurs Ubuntu 12.04.2 LTS.

2
Pascal

Si vous utilisez rsync avec un utilisateur normal, ssh-agent ​​est peut-être ce que vous recherchez.

Si vous rencontrez ce problème lorsque vous utilisez rsync dans un travail cron. Les tâches cron sont exécutées par l'utilisateur cron dans un environnement restreint (certaines variables d'environnement telles que SSH_AUTH_SOCK sont manquantes. ssh-agent ne marche pas).

Une procédure pas à pas consiste à utiliser troussea. Le trousseau conserve les variables d'environnement ssh-agent dans un fichier.
Donc, vous commencez par installer le trousseau.
Ensuite, vous ajoutez ces lignes dans votre fichier .bashrc, .zshrc ou .profile (ajustez-le pour qu'il corresponde à vos clés ssh):

/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/${HOSTNAME}-sh

De plus, pour que les tâches cron fonctionnent, vous pouvez ajouter cette ligne au début de vos scripts cron:

source $HOME/.keychain/${HOSTNAME}-sh


Plus d'infos dans cet article: http://eli.thegreenplace.net/2013/10/08/some-notes-on-logging-and-ssh-access-from-cron-jobs /

4
Abd
rsync -Pavp --rsh="ssh -i YOUR_KEY" DEST USER@REMOTE:SOURCE
2
Vinz

J'ai trouvé la réponse parfaite à cette question sur https://stackoverflow.com/questions/3299951/how-to-pass-password-for-rsync-ssh-command

Cela a fonctionné parfaitement pour moi. Comme le dit Kainjow, c’est un risque pour la sécurité, mais cela résout le problème.

Réponse de kainjow:

Si vous ne pouvez pas utiliser de clé publique/privée, vous pouvez utiliser expect:

#!/usr/bin/expect
spawn rsync SRC DEST
expect "password:"
send "PASS\n"
expect eof
if [catch wait] {
    puts "rsync failed"
    exit 1
}
exit 0

Vous devrez remplacer SRC et DEST par vos paramètres de source et de destination rsync habituels et remplacer PASS par votre mot de passe. Assurez-vous simplement que ce fichier est stocké de manière sécurisée!