Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

SSH agent : authentification par clés SSH avec ou sans keychain

Dans le monde de l’administration système, du développement ou encore de la gestion d’infrastructures, l’authentification par clé SSH est une pratique incontournable pour établir des connexions sécurisées avec des serveurs distants. Cependant, manipuler ces clés peut rapidement devenir fastidieux, surtout lorsqu’elles sont protégées par une passphrase. Vous avez probablement déjà été confronté à la nécessité de ressaisir votre passphrase à chaque nouvelle connexion, ce qui, bien que sécurisant, peut ralentir votre flux de travail.

C’est ici qu’intervient l’outil SSH Agent. Cet assistant invisible mais puissant vous permet de gérer vos clés SSH de manière efficace, en simplifiant le processus d’authentification tout en maintenant un haut niveau de sécurité. Dans cet article, nous explorerons le rôle de SSH Agent, comment il fonctionne, et pourquoi il est un allié indispensable pour quiconque utilise SSH au quotidien.
Je vous montrerai aussi l’utilisation de keychain afin de ne pas avoir à ressaisir la passphrase.

SSH agent : authentification par clés SSH avec ou sans keychain

Qu’est-ce que SSH Agent

SSH agent est un programme qui gère les clés SSH privées pour vous et facilite l’authentification sécurisée sans avoir à entrer votre clé de phrase à chaque fois que vous accédez à un serveur distant ou effectuez une opération nécessitant votre clé SSH.

Par exemple, voici comment la clé d’un utilisateur est vérifiée pendant la poignée de main SSH, du point de vue du serveur :

  • Le client présente une clé publique au serveur.
  • Le serveur génère et envoie un message bref et aléatoire, en demandant au client de le signer à l’aide de la clé privée.
  • Le client demande à l’agent SSH de signer le message et transmet le résultat au serveur.
  • Le serveur vérifie la signature à l’aide de la clé publique du client.
  • Le serveur a maintenant la preuve que le client est en possession de sa clé privée.

L’intérêt et les avantages de son utilisation :

  • Évite la saisie répétée de mots de passe : Vous n’avez pas besoin d’entrer votre phrase secrète (passphrase) pour la clé privée à chaque fois
  • Sécurité accrue : La clé privée n’est pas directement accessible depuis le système de fichiers une fois qu’elle est chargée dans l’agent
  • Pratique pour plusieurs connexions : Si vous vous connectez à plusieurs serveurs, l’agent facilite la gestion

Comment utiliser SSH Agent sur Linux

Vous devez avoir configurer votre échange de clés SSH, pour cela : Générer et se connecter en SSH avec des clés SSH

Ajoutez votre clé SSH à l’agent

Si SSH Agent n’est pas actif, démarrez-le avec :

eval $(ssh-agent)

Cette commande initialise l’agent et configure les variables d’environnement nécessaires (SSH_AGENT_PID et SSH_AUTH_SOCK).

Pour charger votre clé SSH dans l’agent, utilisez la commande ssh-add :

ssh-add ~/.ssh/id_rsa

Remarque : Remplacez ~/.ssh/id_rsa par le chemin de votre clé privée si elle se trouve ailleurs.Si votre clé est protégée par une passphrase, il vous sera demandé de la saisir.

Ensuite saisissez la passphrase qui sera ensuite stockée de manière sécurisée par l’agent SSH.

Ajoutez votre clé SSH à l'agent

Lister les clés SSH

Pour vérifier que votre clé a été ajoutée, utilisez :

ssh-add -l

Cela affichera les empreintes numériques (fingerprints) des clés chargées.
Par exemple :

3072 SHA256:5Yu/y3eSQSQJCWKEe7SgmqiyhoFZc3Vf92hV8VVRPFc mak@mak-Victus-by-HP-15L-Gaming-Desktop (RSA)
Lister les clés SSH de l'agent SSH

Utiliser SSH avec l’agent

Une fois que votre clé est chargée, toutes les connexions SSH utilisant cette clé passeront par l’agent sans que vous ayez à entrer votre passphrase à chaque fois. Par exemple :

ssh user@serveur

Par exemple ci-dessous, je me connecte à la machine avec l’adresse IP 10.0.0.209 avec l’utilisateur mak.
Comme vous pouvez le voir, la connexion est automatique, aucune passphrase n’est demandée.

Utiliser SSH avec l'agent SSH

Utilisez l’option -i si vous devez spécifier un fichier de clé particulier, par exemple :

ssh -i ~/.ssh/mak_key mak@monserveur.local

Configurer une expiration pour la clé

Pour des raisons de sécurité, vous pouvez définir une durée d’expiration pour votre clé dans l’agent :

ssh-add -t 3600

Cela décharge automatiquement la clé après 1 heure (3600 secondes).

Décharger une clé de l’agent

Si vous souhaitez retirer une clé de l’agent, utilisez l’option -d en spécifiant le fichier de la clé publique.

ssh-add -d ~/.ssh/id_rsa

Remplacez ~/.ssh/id_rsa par le chemin de la clé.

Enfin pour décharger toutes les clés chargées :

ssh-add -D

Automatiser SSH Agent au démarrage

Pour éviter de démarrer manuellement SSH Agent à chaque session, ajoutez cette ligne à votre fichier de configuration de shell (~/.bashrc, ~/.zshrc, ou autre) :

eval $(ssh-agent -s)

Cela démarre SSH Agent chaque fois que vous ouvrez une nouvelle session shell.

Comment utiliser SSH Agent avec keychain sur Linux

Qu’est-ce que keychain

Keychain est un outil pratique qui simplifie la gestion des clés SSH sur des systèmes Unix/Linux. Il est particulièrement utile pour maintenir les clés SSH accessibles de manière sécurisée sur des sessions shell multiples ou persistantes.

Keychain agit comme une surcouche pour SSH Agent. quiagit comme un gestionnaire pour ssh-agent, généralement exécuté à partir de ~/.bash_profile. Il permet à vos shells et à vos tâches cron de partager un seul processus ssh-agent. Par défaut, le processus ssh-agent lancé par le trousseau est de longue durée et continuera à fonctionner, même après que vous vous soyez déconnecté du système.
Voici comment il fonctionne :

  • Il démarre (ou réutilise) un SSH Agent.
  • Il charge vos clés SSH dans l’agent.
  • Il configure automatiquement les variables d’environnement nécessaires pour que vos sessions shell utilisent le même agent.
  • Les sessions shell suivantes peuvent accéder à l’agent et aux clés sans avoir à redémarrer le processus.

Voici les avantages offerts par son utilisation :

  • Conserver les clés chargées entre les sessions shell : Lorsque vous démarrez une nouvelle session shell (comme ouvrir un terminal), Keychain permet de réutiliser une clé SSH déjà déverrouillée, au lieu de devoir la recharger et saisir sa passphrase à chaque fois. Vous n’avez pas à ressaisir la passphrase lorsqu’elle a déjà été fournie
  • Simplifier l’utilisation de SSH Agent : Keychain gère le démarrage et l’interaction avec SSH Agent, ce qui réduit la configuration manuelle et améliore la fluidité du travail.
  • Sécurité accrue et centralisée : Keychain s’assure que vos clés restent accessibles uniquement par des sessions légitimes et vous permet de les protéger avec une passphrase.

Comment installer keychain

  • Sur Debian/Ubuntu :
sudo apt install keychain
  • Sur Fedora :
sudo dnf install keychain
  • Sur Arch Linux :
sudo pacman -S keychain

Comment utiliser Keychain

Ajoutez la ligne suivante dans votre fichier ~/.bashrc, ~/.zshrc, ou autre fichier de configuration de shell :

eval $(keychain --eval id_rsa)

Puis passez cette même commande pour rendre keychain actif.
Vous devez saisir la passphrase.

Désormais, chaque fois que vous ouvrez un nouveau terminal, Keychain vérifiera si un agent SSH est actif et, si nécessaire, y ajoutera vos clés.

Maintenant connectez-vous à votre serveur SSH, keychain sera appelé à chaque connexion :

ssh user@serveur

Vérifiez les clés chargées :

ssh-add -l

Recharger une clé spécifique avec Keychain :

keychain id_rsa

Lister les informations sur l’agent actif :

keychain --list

On obtient alors ceci pour chaque agent actif :

3072 SHA256:JlZSz2xzyOYtebkyntuCh8n94uZ08hJye3C5GX+Ckoc mak@mak-VirtualBox (RSA)

Enfin pour désactiver l’agent SSH :

keychain --clear
Désactiver l'agent SSH de keychain

L’article SSH agent : authentification par clés SSH avec ou sans keychain est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires