Configurer l'authentification par clé publique SSH sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez apprendre à configurer et à utiliser l'authentification par clé publique SSH pour établir des connexions sécurisées vers un serveur Linux distant. Cette méthode renforce à la fois la sécurité et le confort d'utilisation en remplaçant l'authentification traditionnelle par mot de passe par une paire de clés cryptographiques. Vous allez créer une clé privée, qui reste confidentielle sur votre machine locale, et une clé publique, qui est déposée sur le serveur pour autoriser votre accès.

Le processus se déroule en trois étapes principales. Tout d'abord, vous utiliserez la commande ssh-keygen pour générer une nouvelle paire de clés RSA pour un utilisateur de démonstration, en ajoutant une couche de sécurité supplémentaire grâce à une phrase de passe (passphrase). Ensuite, vous utiliserez l'utilitaire ssh-copy-id pour copier en toute sécurité la clé publique dans le fichier des clés autorisées du serveur distant. Enfin, vous testerez la configuration en vous connectant au serveur via SSH, ce qui utilisera désormais votre paire de clés pour l'authentification au lieu d'un simple mot de passe.

Ceci est un atelier guidé, proposant des instructions étape par étape pour vous accompagner dans votre apprentissage. Suivez attentivement les consignes pour réaliser chaque étape et acquérir une expérience pratique. Les données historiques indiquent qu'il s'agit d'un atelier de niveau débutant avec un taux de réussite de 97 %. Il a reçu un taux d'évaluation positive de 100 % de la part des apprenants.

Créer un utilisateur de démonstration et générer une paire de clés RSA

Dans cette étape, vous allez d'abord créer un compte utilisateur dédié pour démontrer l'authentification par clé publique SSH, puis générer une paire de clés cryptographiques RSA. Cette approche permet de disposer d'un environnement propre pour la démonstration sans affecter les configurations des utilisateurs existants.

Créer l'utilisateur de démonstration

Commençons par créer un nouvel utilisateur nommé sshuser qui servira à notre démonstration SSH :

sudo adduser sshuser

Le système vous demandera de définir un mot de passe et de fournir des informations sur l'utilisateur. Pour cet atelier, utilisez password123 comme mot de passe. Vous pouvez appuyer sur Entrée pour ignorer les champs facultatifs (Nom complet, Numéro de bureau, etc.).

Adding user `sshuser' ...
Adding new group `sshuser' (1001) ...
Adding new user `sshuser' (1001) with group `sshuser' ...
Creating home directory `/home/sshuser' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for sshuser
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

Générer la paire de clés RSA

Basculez maintenant sur le compte sshuser pour générer la paire de clés. Cela garantit que les clés sont créées dans le répertoire personnel du bon utilisateur :

sudo su - sshuser

Vous agissez désormais en tant qu'utilisateur sshuser. Générez une paire de clés RSA à l'aide de la commande ssh-keygen. L'option -t spécifie le type de clé à créer, ici rsa.

ssh-keygen -t rsa

Après avoir lancé la commande, le système vous demandera l'emplacement où enregistrer les clés. L'emplacement par défaut est ~/.ssh/id_rsa, situé dans un répertoire caché nommé .ssh à la racine du dossier personnel de l'utilisateur. Appuyez sur Entrée pour accepter cet emplacement par défaut.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/sshuser/.ssh/id_rsa):

Ensuite, il vous sera demandé de saisir une phrase de passe (passphrase). Une phrase de passe ajoute une protection supplémentaire à votre clé privée. Pour cet atelier, utilisons sshkey-password. Vous devrez la saisir deux fois.

Note : Lorsque vous tapez la phrase de passe, aucun caractère ne s'affiche à l'écran. Il s'agit d'une mesure de sécurité standard.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sshuser/.ssh/id_rsa
Your public key has been saved in /home/sshuser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:<FINGERPRINT_STRING> sshuser@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|      .. . .o..  |
|     .  . . o..  |
|      .  . = . . |
|       .  B o .  |
|        S= * .   |
|        o*B o .  |
|       .oO=B . . |
|      .o+*+oE. . |
|      .o*o=o.o.  |
+----[SHA256]-----+

Maintenant que les clés sont générées, vous pouvez vérifier que les fichiers ont été créés correctement. Utilisez la commande ls -l pour lister le contenu du répertoire ~/.ssh :

ls -l ~/.ssh

Vous devriez voir un résultat similaire au suivant, affichant vos nouveaux fichiers de clés :

total 8
-rw------- 1 sshuser sshuser 2610 Jun 30 10:30 id_rsa
-rw-r--r-- 1 sshuser sshuser  575 Jun 30 10:30 id_rsa.pub

Notez les permissions des fichiers. La clé privée id_rsa possède des droits de lecture/écriture uniquement pour le propriétaire, tandis que la clé publique id_rsa.pub peut être lue par d'autres. Il est crucial de protéger votre clé privée et de ne jamais la partager.

Copier la clé publique sur le serveur avec ssh-copy-id

Dans cette étape, vous allez copier la clé publique générée précédemment sur le serveur SSH. Cette action autorise la clé, vous permettant de vous connecter en utilisant la clé privée correspondante au lieu d'un mot de passe. L'utilitaire ssh-copy-id est un script qui simplifie ce processus en installant votre clé au bon endroit sur le serveur.

Pour les besoins de cet atelier, nous allons simuler une interaction client-serveur sur une seule machine. Le compte sshuser fera office à la fois de client et de compte cible pour la connexion SSH.

Assurez-vous d'être toujours connecté avec le compte sshuser. Si vous êtes revenu à l'utilisateur labex, basculez de nouveau :

sudo su - sshuser

Vous êtes maintenant prêt à copier la clé publique. La commande ssh-copy-id prend en argument l'utilisateur distant et l'hôte. Nous utiliserons sshuser@localhost pour désigner l'utilisateur sshuser sur la machine locale (faisant office de serveur).

Exécutez la commande :

ssh-copy-id sshuser@localhost

Comme c'est la première fois que vous vous connectez à localhost via SSH, le système vous demandera de vérifier l'authenticité de l'hôte. Tapez yes pour continuer :

The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is SHA256:<FINGERPRINT_STRING>.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

L'utilitaire recherchera ensuite votre clé id_rsa.pub et vous demandera le mot de passe du compte sshuser. Saisissez le mot de passe password123 que vous avez défini lors de la création de l'utilisateur.

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sshuser@localhost's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'sshuser@localhost'"
and check to make sure that only the key(s) you wanted were added.

Le message confirme qu'une clé a été ajoutée avec succès. La commande ssh-copy-id crée automatiquement le répertoire ~/.ssh sur le serveur s'il n'existe pas et ajoute votre clé publique au fichier ~/.ssh/authorized_keys.

Pour le confirmer, vous pouvez consulter le contenu du fichier authorized_keys. Il doit contenir exactement la même clé que votre fichier id_rsa.pub.

cat ~/.ssh/authorized_keys

Le résultat sera une longue chaîne de caractères correspondant à votre clé publique.

ssh-rsa AAAA...[long key string]...== sshuser@ubuntu

Tester la connexion SSH avec l'authentification par clé publique

Dans cette dernière étape, vous allez tester la nouvelle configuration pour vous assurer que l'authentification par clé publique fonctionne correctement. Vous allez tenter de vous connecter au serveur SSH en utilisant la paire de clés créée. Au lieu de saisir votre mot de passe utilisateur, le système devrait vous demander la phrase de passe de votre clé privée.

Vérifiez que vous utilisez toujours le compte sshuser :

whoami

Le résultat doit être sshuser. Si ce n'est pas le cas, basculez vers le compte sshuser :

sudo su - sshuser

Maintenant, initialisons une connexion SSH vers localhost. Comme vous vous êtes déjà connecté une fois lors de la copie de la clé, la clé de l'hôte est déjà acceptée.

Exécutez la commande suivante pour vous connecter :

ssh sshuser@localhost

Le système vous demandera de saisir la phrase de passe de votre clé privée. Il s'agit de la phrase de passe créée à l'étape 1 (sshkey-password).

Enter passphrase for key '/home/sshuser/.ssh/id_rsa':

Saisissez votre phrase de passe, sshkey-password, et appuyez sur Entrée. Si elle est correcte, vous serez connecté au serveur et verrez un message de bienvenue.

Welcome to Ubuntu 22.04.x LTS (GNU/Linux x.x.x-xx-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Last login: Mon Jun 30 10:45:23 2024 from ::1
sshuser@ubuntu:~$

Félicitations ! Vous vous êtes connecté avec succès en utilisant l'authentification par clé publique. Vous êtes maintenant dans une nouvelle session SSH. Remarquez que le mot de passe du compte utilisateur (password123) ne vous a pas été demandé, seule la phrase de passe de la clé l'a été.

Pour vérifier que vous êtes bien dans une nouvelle session SSH, vous pouvez consulter les variables d'environnement :

echo $SSH_CONNECTION

Cela devrait afficher les détails de la connexion, confirmant que vous êtes dans une session SSH.

Pour fermer la session SSH et revenir à votre terminal d'origine, tapez simplement exit et appuyez sur Entrée.

exit

Un message confirmera que la connexion a été fermée.

logout
Connection to localhost closed.

Enfin, vous pouvez quitter le compte sshuser pour revenir à l'utilisateur labex :

exit

Vous avez maintenant configuré et testé avec succès l'authentification par clé publique SSH à l'aide d'un utilisateur de démonstration dédié.

Résumé

Dans cet atelier, vous avez appris à configurer et à utiliser l'authentification par clé publique SSH pour établir une connexion sécurisée et sans mot de passe vers un serveur Linux distant. Vous avez commencé par créer un utilisateur de démonstration dédié (sshuser) afin de garantir un environnement propre pour la mise en place de l'authentification par clé. Ensuite, vous avez généré une nouvelle paire de clés RSA à l'aide de la commande ssh-keygen. Ce processus a créé une clé privée, qui reste sécurisée et protégée par une phrase de passe pour une sécurité accrue, ainsi qu'une clé publique correspondante.

Par la suite, vous avez utilisé l'utilitaire ssh-copy-id pour transférer en toute sécurité la clé publique vers le fichier des clés autorisées du serveur. Cette commande a automatiquement ajouté la clé au fichier ~/.ssh/authorized_keys, autorisant ainsi l'accès via la paire de clés. La dernière étape a consisté à tester la connexion en initiant une session SSH vers le serveur, laquelle s'est authentifiée avec succès grâce à la phrase de passe de la clé privée au lieu du mot de passe du compte utilisateur, confirmant ainsi le bon fonctionnement de l'authentification par clé publique.