Je dois effectuer des sauvegardes périodiques d'un répertoire sur un serveur distant qui est une machine virtuelle hébergée par une organisation de recherche. Ils exigent que l'accès aux machines virtuelles se fasse via des clés ssh, ce qui est tout à fait bien, sauf que je ne sais pas comment faire pointer rsync sur la clé ssh de ce serveur.
Rsync n'a pas de problème si le fichier de clé est ~/.ssh/id_rsa
, mais quand c'est quelque chose d'autre que je reçois Permission denied (publickey)
.
Avec ssh, je peux spécifier le fichier d'identité avec -i
, mais rsync ne semble pas avoir cette option.
J'ai également essayé de déplacer temporairement la clé sur la machine locale ~/.ssh/id_rsa
, mais cela ne fonctionne pas non plus.
tl; dr
Pouvez-vous spécifier un fichier d'identité avec rsync?
sudo rsync
, qui n'utilise pas ses propres clés ssh, pour une raison quelconque.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
pour la synchronisation de scripts cron qui s'exécutent en tant que rootRéponses:
Vous pouvez spécifier la commande ssh exacte via l'option '-e':
De nombreux utilisateurs de ssh ne connaissent pas leur fichier ~ / .ssh / config. Vous pouvez spécifier les paramètres par défaut par hôte via le fichier de configuration.
À long terme, il est préférable d’apprendre le fichier ~ / .ssh / config.
la source
~/.ssh/config
fichier - vous m'avez ouvert un nouvel univers!Cela peut être fait avec la configuration d'utilisateur SSH, voir: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ fondamentalement, éditez ~ / .ssh / config:
Cela devrait fonctionner pour tout programme utilisant SSH, rsync,
la source
Pour moi, il suffisait de démarrer ssh-agent comme suit:
Voir aussi une réponse plus longue ici https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
la source
FYI:
1) La clé publique se trouve toujours dans le répertoire de base de l’utilisateur se connectant au serveur distant, c’est-à-dire que si vous vous connectez en tant que "sauvegarde", elle se trouve dans /home/backup/.ssh/authorized_keys. L'identifiant de l'utilisateur lorsque vous vous connectez définit la clé publique utilisée sur la destination.
Vous pouvez choisir l'ID utilisateur lors de la connexion de deux manières différentes:
D'un autre côté, la clé privée est similaire dans le répertoire utilisateur à moins que vous ne la remplaciez comme décrit dans la réponse de Dan.
2) À des fins de sauvegarde, il peut être souhaitable de créer une clé restreinte, limitée à l’exécution d’une seule commande telle que "rsync". Il y a une bonne description à propos de celle liée à la sauvegarde "rsnapshot" qui vous permet de sauvegarder à distance tout le serveur en utilisant un compte utilisateur non privilégié et "sudo":
"rsnapshot" howto
Rsnapshot peut facilement sauvegarder un ensemble de serveurs distants ou locaux, ce qui en fait un serveur de sauvegarde programmé et centralisé très pratique.
la source