Je dois faire rsync
par ssh
et que vous souhaitez le faire automatiquement sans qu'il soit nécessaire de passer le mot de passe ssh
manuellement.
111
Vous devez utiliser un fichier de clés sans mot de passe pour les connexions ssh scriptées. Il s'agit évidemment d'un risque de sécurité, veillez à ce que le fichier de clés lui-même soit correctement sécurisé.
ssh -i
devrait toujours être possible du côté client. Voulez-vous dire que le serveur peut ne pas prendre en charge tous les types de clés (par exemple ECDSA)? Ce ne serait cependant pas un problème majeur, juste un cas d'utilisationssh-keygen -t
. Est-ce que je manque quelque chose?rsync -e
etssh -i
.Utilisez l'utilitaire de fournisseur de mot de passe ssh non interactif "sshpass"
Sur Ubuntu
Commande à rsync
la source
sshpass -p`cat .password` ssh [...]
. Protégez ensuite votre.password
fichierchmod 400 .password
pour vous assurer que seul votre utilisateur peut le lire.src_path
devrait être server: path, comme ceci:server01.mydomain.local:/path/to/folder
-a
commutateur sur rsync inclut-rlptgoD
, vous pouvez raccourcir la commande comme ceci:rsync -az ...
Vous pouvez éviter l'invite de mot de passe sur la
rsync
commande en définissant la variable d'environnementRSYNC_PASSWORD
sur le mot de passe que vous souhaitez utiliser ou en utilisant l'--password-file
option.la source
Si vous ne pouvez pas utiliser de clés publiques / privées, vous pouvez utiliser expect:
Vous devrez remplacer SRC et DEST par vos paramètres de source et de destination rsync normaux, et remplacer PASS par votre mot de passe. Assurez-vous simplement que ce fichier est stocké en toute sécurité!
la source
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Je l'ai fait fonctionner comme ceci:
la source
remote_port_ssh
réglage? Cela ressemble à un espace réservé pour une valeur réelle.Utilisez une clé ssh.
Regardez
ssh-keygen
etssh-copy-id
.Après cela, vous pouvez utiliser de
rsync
cette façon:la source
Une autre possibilité intéressante:
Remarque: -i dsa_private_file qui est votre clé privée RSA / DSA
Fondamentalement, cette approche est très similaire à celle décrite par @Mad Scientist, mais vous n'avez pas à copier votre clé privée dans ~ / .ssh. En d'autres termes, il est utile pour les tâches ad hoc (accès unique sans mot de passe)
la source
Ce qui suit fonctionne pour moi:
Je devais installer
sshpass
la source
Il est difficile de saisir automatiquement le mot de passe de la commande rsync. Ma solution simple pour éviter le problème est de monter le dossier à sauvegarder. Utilisez ensuite une commande rsync locale pour sauvegarder le dossier monté.
la source
Bien que vous l'ayez déjà implémenté maintenant,
vous pouvez également utiliser n'importe quelle implémentation expect (vous trouverez des alternatives en Perl, Python: pexpect, paramiko, etc.)
la source
J'utilise un fichier VBScript pour faire cela sur la plate-forme Windows, il me serveur très bien.
la source
La solution officielle (et d'autres) étaient incomplètes lors de ma première visite, alors je suis revenu, des années plus tard, pour publier cette approche alternative au cas où d'autres se retrouveraient ici dans l'intention d'utiliser une paire de clés publique / privée:
Exécutez ceci à partir de la machine de sauvegarde cible, qui extrait de la sauvegarde source vers la sauvegarde cible
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' [email protected]:/home/user/Server/ /home/keith/Server/
Exécutez cela à partir de la machine source, qui envoie de la source à la sauvegarde cible
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ [email protected]:/home/user/Server/
Et, si vous n'utilisez pas un autre port pour ssh, considérez les exemples les plus élégants ci-dessous:
Exécutez ceci à partir de la machine de sauvegarde cible, qui extrait de la sauvegarde source vers la sauvegarde cible:
sudo rsync -avi --delete [email protected]:/var/www/ /media/sdb1/backups/www/
Exécutez ceci à partir de la machine source, qui envoie de la source à la sauvegarde cible:
sudo rsync -avi --delete /media/sdb1/backups/www/ [email protected]:/var/www/
Si vous êtes toujours invité à entrer un mot de passe, vous devez vérifier votre configuration ssh
/etc/ssh/sshd_config
et vérifier que les utilisateurs de la source et de la cible ont chacun la clé ssh publique respective des autres en envoyant chacun avecssh-copy-id [email protected]
.(Encore une fois, c'est pour utiliser des paires de clés ssh sans mot de passe, comme une approche alternative, et non pour passer le mot de passe via un fichier.)
la source
Suivant l'idée publiée par Andrew Seaford, cela se fait en utilisant sshfs:
la source