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?
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.
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
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 :-)
Ça marche pour moi
rsync -avz --rsh="ssh -p1234 -i ~/.ssh/1234-identity" \
"/local/dir/" [email protected]:"/remote/dir/"
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.
utilisez le fichier de clé avec rsync:
rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test