web-dev-qa-db-fra.com

Comment utilisez-vous un fichier d'identité avec rsync?

Comment utilisez-vous un fichier d'identité avec rsync?

Voici la syntaxe I think Je devrais utiliser avec rsync l’utilisation d’un fichier d’identité pour se connecter:

 rsync -avz -e 'ssh -p1234 -i ~/.ssh/1234-identity'\
 "/ local/dir /" [email protected]: "/ remote/dir/"

Mais cela me donne une erreur:

 Avertissement: fichier d’identité ~/.ssh/1234-identity non accessible: fichier ou répertoire de ce type. 

Le fichier est correct, les autorisations sont définies correctement, cela fonctionne lorsque vous utilisez ssh - mais pas avec rsync - du moins dans ma syntaxe. Qu'est-ce que je fais mal? Est-ce qu'il essaie de rechercher le fichier d'identité sur la machine distante? Si tel est le cas, comment puis-je spécifier que je souhaite utiliser un fichier d'identité sur ma machine locale?

117
cwd

Vous voudrez peut-être utiliser ssh-agent et ssh-add pour charger la clé en mémoire. ssh essaiera automatiquement les identités de ssh-agent 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 garde en mémoire les clés ssh non chiffrées. ssh le trouve en fonction des variables d'environnement que ssh-agent génère lors de son exécution. Utiliser 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é à l'aide de 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é lors de son ajout.

Vous pouvez é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 simple citation de la commande ssh empêchera le développement du shell nécessaire à ~ ou $HOME. Vous pouvez utiliser le chemin complet ou relatif de la clé entre guillemets simples.

80
BillThor

Utilisez soit $HOME

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

ou chemin complet vers la clé:

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

Testé avec rsync 3.0.9 sur Ubuntu

70
Tombart

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

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

36
Alpha01

Ça marche pour moi

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" [email protected]:"/remote/dir/"
22
ilcavero

Exécutez-vous la commande en bash ou sh? Cela pourrait faire une différence. Essayez de remplacer ~ avec $HOME. Essayez de citer deux fois la chaîne pour le -e option.

6
Darhuuk

utilisez le fichier de clé avec rsync:

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test
4
Avinash Raut