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.

timotree
la source
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.

Jakuje
la source
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
Savitoj Singh
la source
1
C'était une bonne réponse mais n'explique pas ce que fait la commande.
timotree