118 votes

Comment utiliser un fichier d'identité avec rsync ?

Comment utiliser un fichier d'identité avec rsync ?

C'est la syntaxe que je pensez à Je devrais utiliser avec rsync un fichier d'identité pour me connecter :

rsync -avz -e 'ssh -p1234  -i ~/.ssh/1234-identity'  \\
"/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"

Mais ça me donne une erreur :

Warning: Identity file ~/.ssh/1234-identity not accessible: No such file or directory.

Le fichier est correct, les permissions sont définies correctement, il fonctionne avec ssh - mais pas avec rsync - du moins dans ma syntaxe. Qu'est-ce que je fais de mal ? Est-ce qu'il essaie de chercher le fichier d'identité sur la machine distante ? Si oui, comment puis-je spécifier que je veux utiliser un fichier d'identité sur mon ordinateur ? local machine ?

82voto

BillThor Points 3319

Vous pouvez utiliser ssh-agent y ssh-add pour charger la clé en mémoire. ssh essaiera les identités de ssh-agent automatiquement s'il peut les trouver. Les commandes seraient

eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agent est un démon utilisateur qui conserve les clés ssh non cryptées en mémoire. ssh le trouve en se basant sur les variables d'environnement que ssh-agent produit lorsqu'il est exécuté. Utilisation de eval pour évaluer cette sortie crée les variables d'environnement. ssh-add est la commande qui gère la mémoire des clés. L'agent peut être verrouillé en utilisant ssh-add. Une durée de vie par défaut pour une clé peut être spécifiée lors du démarrage de ssh-agent, ou spécifiée pour une clé lorsqu'elle est ajoutée.

Vous pourriez également vouloir configurer un fichier ~/.ssh/config pour fournir la définition du port et de la clé. (Voir `man ssh_config pour plus d'options).

host 22.33.44.55
    IdentityFile ~/.ssh/1234-identity
    Port 1234

Une citation unique de la commande ssh empêchera l'expansion de l'interpréteur de commandes qui est nécessaire pour ~ o $HOME . Vous pouvez utiliser le chemin d'accès complet ou relatif à la clé entre guillemets simples.

72voto

Tombart Points 4503

Utilisez soit $HOME

rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:

ou le chemin complet de la clé :

rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir user@server:

Testé avec rsync 3.0.9 sur Ubuntu

36voto

Alpha01 Points 470

Vous devez spécifier le chemin absolu vers votre fichier de clé d'identité. C'est probablement une sorte de bizarrerie dans rsync. (il ne peut pas être parfait après tout)

J'ai rencontré ce problème il y a quelques jours seulement :-)

22voto

ilcavero Points 1185

Cela fonctionne pour moi

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"

6voto

Darhuuk Points 4862

Exécutez-vous la commande en bash ou en sh ? Cela peut faire une différence. Essayez de remplacer ~ con $HOME . Essayez de mettre la chaîne en double quinte pour le -e option.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X