<h2><a name="p-27956-meilleure-alternative-par-rapport-la-rponse-initiale-base-sur-labsence-de-phrase-de-passe-sur-la-cl-1" class="anchor" href="#p-27956-meilleure-alternative-par-rapport-la-rponse-initiale-base-sur-labsence-de-phrase-de-passe-sur-la-cl-1" aria-label="Heading link"></a>Meilleure alternative (par rapport à la réponse initiale) basée sur l’absence de phrase de passe sur la clé</h2>
<p>Vous avez posé une question sur <a href="https://superuser.com/questions/1808572/how-to-automate-starting-the-ssh-agent-and-adding-my-keys-in-wsl2-for-windows/1808594#comment2838851_1808572">le commentaire de @u1686_grawity</a> :</p>
<blockquote></blockquote>
<p>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 ?</p>
<p><span class="mention">@u1686_grawity</span> fait une remarque pertinente : la plupart des clients SSH vous permettent de spécifier un fichier de clé directement sans nécessiter d’agent.</p>
<blockquote></blockquote>
<p>Je me connecte souvent à un serveur distant via une authentification par clé SSH.</p>
<p>Vous ne mentionnez pas nécessairement comment vous vous connectez, mais si c’est avec la commande <code>ssh</code> standard, alors vous pouvez simplement spécifier votre fichier de clé en ligne de commande avec :</p>
<pre><code class="lang-auto">ssh -i ~/.ssh/my_key <username>@site
</code></pre>
<p>Dans ce cas, vous n’avez pas du tout besoin d’un <code>ssh-agent</code> en cours d’exécution.</p>
<p>Même si vous n’utilisez pas <code>ssh</code> directement, la plupart des outils SSH basés sur OpenSSH utiliseront également le même fichier <code>~/.ssh/config</code>, 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 <code>~/.ssh/config</code> avec le contenu suivant :</p>
<pre><code class="lang-auto">Host <whatever_you_want_to_call_it>
Hostname <hostname_or_ip>
User <optional_username_if_different>
IntentityFile ~/.ssh/my_key
</code></pre>
<p>Ensuite, vous pouvez simplement taper <code>ssh <whatever_you_want_to_call_it></code> et tout le reste sera extrait de la configuration. D’autres outils comme <code>sftp</code> et <code>scp</code> fonctionneront également de la même manière.</p>
<h2><a name="p-27956-ancienne-rponse-fonctionne-galement-mais-ncessaire-pour-les-cls-avec-mots-de-passe-2" class="anchor" href="#p-27956-ancienne-rponse-fonctionne-galement-mais-ncessaire-pour-les-cls-avec-mots-de-passe-2" aria-label="Heading link"></a>Ancienne réponse (fonctionne également, mais nécessaire pour les clés avec mots de passe) :</h2>
<p>La réponse de <span class="mention">@Kolkhis</span> fonctionnera certainement, mais si vous exécutez plusieurs shells (par exemple sous Tmux ou Windows Terminal), cela lancera une nouvelle instance de <code>ssh-agent</code> 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).</p>
<p>Je recommande l’<a href="https://www.funtoo.org/Funtoo:Keychain">utilitaire Keychain</a> de Daniel Robbins (également le créateur de Gentoo Linux). Ce petit utilitaire vérifie s’il existe déjà un <code>ssh-agent</code> 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.</p>
<p>Il est disponible dans les dépôts par défaut de la plupart des distributions, y compris Ubuntu :</p>
<pre><code class="lang-auto">sudo apt install keychain
</code></pre>
<p>Ensuite, ajoutez ce qui suit à votre fichier <code>~/.bashrc</code> :</p>
<pre><code class="lang-auto">eval $(keychain --eval my_key)
</code></pre>
<p>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 <em>pas</em> dans le répertoire par défaut <code>~/.ssh/</code>.</p>