Meilleure alternative (par rapport à la réponse initiale) basée sur l’absence de phrase de passe sur la clé
Vous avez posé une question sur le commentaire de @u1686_grawity :
Si c’est sans phrase de passe, avez-vous vraiment besoin de l’agent, par opposition au fait de laisser le client SSH charger la clé directement depuis un fichier ?
@u1686_grawity fait une remarque pertinente : la plupart des clients SSH vous permettent de spécifier un fichier de clé directement sans nécessiter d’agent.
Je me connecte souvent à un serveur distant via une authentification par clé SSH.
Vous ne mentionnez pas nécessairement comment vous vous connectez, mais si c’est avec la commande ssh standard, alors vous pouvez simplement spécifier votre fichier de clé en ligne de commande avec :
ssh -i ~/.ssh/my_key <username>@site
Dans ce cas, vous n’avez pas du tout besoin d’un ssh-agent en cours d’exécution.
Même si vous n’utilisez pas ssh directement, la plupart des outils SSH basés sur OpenSSH utiliseront également le même fichier ~/.ssh/config, ce qui signifie que vous pouvez même vous passer de spécifier le nom du fichier d’identité. Par exemple, créez un fichier ~/.ssh/config avec le contenu suivant :
Host <whatever_you_want_to_call_it>
Hostname <hostname_or_ip>
User <optional_username_if_different>
IntentityFile ~/.ssh/my_key
Ensuite, vous pouvez simplement taper ssh <whatever_you_want_to_call_it> et tout le reste sera extrait de la configuration. D’autres outils comme sftp et scp fonctionneront également de la même manière.
Ancienne réponse (fonctionne également, mais nécessaire pour les clés avec mots de passe) :
La réponse de @Kolkhis fonctionnera certainement, mais si vous exécutez plusieurs shells (par exemple sous Tmux ou Windows Terminal), cela lancera une nouvelle instance de ssh-agent pour chaque shell. Dans votre cas, ce n’est pas si grave puisque votre clé n’a pas de mot de passe (bien que je vous déconseille également cette pratique, bien sûr). Cependant, pour les clés avec mots de passe, vous devrez le saisir à nouveau pour chaque shell que vous exécutez. Cela engendrera également un temps de démarrage et une consommation mémoire supplémentaires (bien que faibles).
Je recommande l’utilitaire Keychain de Daniel Robbins (également le créateur de Gentoo Linux). Ce petit utilitaire vérifie s’il existe déjà un ssh-agent en cours d’exécution, et si c’est le cas, il définit simplement les variables d’environnement appropriées pour pointer vers cet agent. Sinon, au premier lancement, il démarrera bien sûr un nouvel agent.
Il est disponible dans les dépôts par défaut de la plupart des distributions, y compris Ubuntu :
sudo apt install keychain
Ensuite, ajoutez ce qui suit à votre fichier ~/.bashrc :
eval $(keychain --eval my_key)
Si je me souviens bien, vous n’avez même pas besoin de spécifier le chemin vers la clé, sauf si elle ne se trouve pas dans le répertoire par défaut ~/.ssh/.