web-dev-qa-db-fra.com

Un moyen simple d'exécuter ssh-agent et ssh-add lors de la connexion via SSH?

J'essaie de faire exécuter automatiquement les commandes suivantes lorsque je me connecte à mon serveur via ssh:

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa

Ma clé ssh a une phrase de passe et je suis d'accord pour la saisir une fois par connexion.

J'ai essayé de mettre cela dans mon fichier .bashrc, mais je pense que ssh-agent démarre une nouvelle session bash. Lorsque j'essaye de me connecter après l'avoir dans mon .bashrc, il se bloque et je dois taper 'exit' pour voir ensuite l'invite 'enter passphrace to unlock key'

D'autres suggestions?

Le serveur exécute Ubuntu LTS

42
Click Upvote

Vous pouvez essayer d'ajouter ceci:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

De cette façon, le ssh-agent ne démarre pas un nouveau Shell, il se lance simplement en arrière-plan et crache les commandes Shell pour définir les variables d'environnement appropriées.

Comme dit dans le commentaire, peut-être que vous voulez pas vouloir exécuter l'agent du tout sur l'hôte distant, mais plutôt sur la boîte à partir de laquelle vous travaillez et utiliser

ssh -A remote-Host

pour transférer les services de votre agent ssh local vers l'hôte distant.

Pour des raisons de sécurité, vous ne devez utiliser le transfert d'agent qu'avec des hôtes gérés par des personnes de confiance, mais c'est mieux que d'exécuter un agent complet à distance à tout moment.

56
Tobi Oetiker

Une alternative consiste à utiliser le trousseau de Funtoo . Ensuite, vous pouvez coller cette doublure dans votre coque bash:

eval $(keychain --eval id_rsa)

Cela fait la même chose (lance l'agent ssh, etc.), tout en n'exécutant pas de processus ssh-agent pour chaque sous-shell. Au lieu de cela, il recherche les instances "déjà en cours d'exécution" que vous possédez et vous y attache.

2
Erik Aronesty