Enregistrer les identités ajoutées par ssh-add afin qu'elles persistent


19

J'ai récemment configuré opensshpour pouvoir l'utiliser avec git.

Dans le processus de configuration (selon cet article ), j'ai exécuté les commandes:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

Quelque temps plus tard, après avoir fermé ma session et me reconnecter, j'ai essayé d'utiliser, git pushj'ai eu une erreur. La solution à cette erreur était d'exécuter à nouveau ces mêmes commandes.

Veuillez me dire comment je peux

  • Continuez à ssh-agentcourir pour ne pas avoir à en commencer un nouveau
  • N'oubliez pas les clés que j'ai ajoutées, donc je n'ai pas à les ajouter à chaque fois

Juste pour clarifier, j'utilise zsh donc certaines fonctionnalités bash ne fonctionneront pas dans mon .zshrc.


Vous devez commencer par comprendre à quoi sert ssh-agentet comment cela fonctionne avant d'essayer de l'adapter à votre cas d'utilisation tordu.
Jakuje

Quelle erreur avez-vous?
Jakuje

@Jakuje L'erreur concernait une clé pub manquante et a demandé "Avez-vous démarré ssh-agent?".
timotree

Réponses:


21

À quoi ssh-agentça sert et comment ça marche?

Le ssh-agentconserve vos clés déchiffrées en toute sécurité dans la mémoire et dans votre session. Il n'existe aucun moyen raisonnable et sûr de conserver les clés déchiffrées lors des redémarrages / reconnexions.

OK, comment puis-je l'automatiser?

Automatisez le ssh-agentdémarrage

Ajouter

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

à votre ~/.bashrcou à un autre script de démarrage ( ~/.zshrc).

Automatisez l'ajout des clés

Les clés peuvent être ajoutées automatiquement lors de la première utilisation, lorsque vous ajoutez

AddKeysToAgent yes

à votre ~/.ssh/config.

Pour plus d'informations sur ~/.ssh/configvoir man ssh_config.


Vous dites donc que si j'active AddKeysToAgent, à chaque fois que je tape, eval "$(ssh-agent -s)"il ajoute ma clé?
timotree

Si l'agent est en cours d'exécution et que votre sshprend en charge cette option, alors oui.
Jakuje

Pouvez-vous s'il vous plaît clarifier comment j'automatiserais le démarrage de l' ssh-agentépoque?
timotree

Fondamentalement, comme expliqué dans l'autre réponse. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje

Est-ce que cela fonctionne avec zsh?
timotree

3

Ajoutez ceci à ~/.bashrc

Cela signifie que ssh-agent sera démarré automatiquement lorsque vous ouvrirez une autre session sans votre terminal

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

si vous avez besoin d'ajouter une clé à l'agent, ajoutez-la également

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi

1
C'était une bonne réponse mais n'explique pas ce que fait la commande.
timotree
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.