Créer et configurer une clé SSH sous Ubuntu

Il est facile de créer une paire de clés SSH sous Ubuntu, en passant par le terminal. Il vous suffit ensuite de transférer la clé publique à votre serveur, puis de profiter de la possibilité qui vous est offerte pour y établir une connexion sécurisée. Découvrez avec nous le détail des différentes étapes à suivre.

Qu’est-ce qu’une clé SSH ?

Si vous souhaitez établir des connexions sécurisées à l’aide du protocole SSH, vous pouvez vous authentifier en utilisant des clés SSH et sans renseigner de mot de passe. Pour ce faire, vous avez besoin d’une paire de clés SSH, qui se compose d’une clé publique et d’une clé privée. La clé publique est destinée au système avec lequel vous souhaitez établir la connexion SSH en question ; il peut par exemple s’agir d’un serveur. La clé privée, quant à elle, doit bénéficier d’une protection particulière. Après sa création, elle est stockée côté client (chez vous) ; vous devez ensuite l’utiliser pour déchiffrer la clé SSH publique au moment d’établir la connexion.

Conseil

Les clés SSH s’utilisent aujourd’hui avec un grand nombre de services. Depuis la fin de l’année 2021, le protocole SSH est d’ailleurs l’une des deux méthodes d’authentification disponibles pour accéder à la ligne de commande dans GitHub. Si vous souhaitez en savoir plus, consultez notre article intitulé « Utilisation d’une clé SSH avec GitHub ».

Créer et configurer une clé SSH sous Ubuntu : étape par étape

Vous souhaitez vous connecter de manière sécurisée à des serveurs ou à certains services, le tout sans avoir à renseigner de mot de passe ? Les paires de clés SSH sont la solution d’authentification qu’il vous faut. À l’aide des étapes décrites ci-dessous, découvrez avec nous un exemple basé sur Ubuntu 22.04 et apprenez à générer des clés SSH sous Ubuntu et à les configurer pour vous authentifier sur un serveur, afin d’utiliser les clés SSH pour votre propre connexion réseau.

Conseil

Vous cherchez une solution sûre pour héberger vos fichiers ? N’attendez plus pour louer votre serveur SFTP avec IONOS pour transférer et stocker vos données en toute sécurité grâce aux protocoles SSH et FTP !

Étape 1 : créer une paire de clés SSH

Vous pouvez générer rapidement des clés SSH sous Ubuntu : passez directement par le terminal pour créer à tout moment une paire composée d’une clé publique et d’une clé privée. Il vous suffit d’exécuter la ligne de commande d’Ubuntu avec la commande suivante :

ssh-keygen
bash

Celle-ci permet de générer automatiquement une paire de clés RSA avec un chiffrement de 3 072 bits, largement suffisant pour la plupart des cas d’utilisation. Il est également possible de créer des clés plus grandes (de 4 096 bits) ; pour ce faire, ajoutez simplement le paramètre « -b 4096 » à votre commande.

ssh-keygen -b 4096
bash

Une fois cette commande exécutée, Ubuntu génère une paire de clés. Le système vous demande alors si vous souhaitez enregistrer ces clés SSH sous le répertoire utilisateur d’Ubuntu (dans le sous-dossier /.ssh) ; pour confirmer, appuyez sur la touche « Entrée ». Si cela ne vous convient pas, vous pouvez indiquer un autre chemin.

Créer une clé SSH sous Ubuntu, depuis le terminal
Créer une clé SSH sous Ubuntu, depuis le terminal.

Une fois l’emplacement de votre paire de clés défini, Ubuntu vous demande de définir une phrase secrète et sécurisée. Cette phrase secrète permet d’ajouter un niveau de sécurité supplémentaire à votre méthode d’authentification chiffrée, et donc d’empêcher tout utilisateur non autorisé de se connecter. Entrez la phrase que vous souhaitez ou laissez ce champ vide si vous estimez ne pas avoir besoin de ce niveau de sécurité.

Quoi que vous décidiez, terminez cette action en appuyant sur la touche « Entrée ». Vous devriez normalement recevoir une « image randomart » individuelle de vos clés SSH ; celle-ci vous confirme leur bonne création.

« Image randomart » d’une paire de clés SSH sous Ubuntu
« Image randomart » d’une paire de clés SSH sous Ubuntu.
Conseil

Vous ne savez pas sur quelle version du système vous travaillez actuellement ? Consultez l’article suivant pour découvrir comment afficher votre version d’Ubuntu.

Étape 2 : transférer la clé publique au serveur

À cette étape, vous devez transférer la clé publique au système cible avec lequel vous prévoyez d’établir des connexions SSH sécurisées. Vous avez donc besoin du nom d’utilisateur que vous utilisez pour vous connecter à ce système, mais également de l’adresse IP ou du domaine de ce dernier. Vous n’avez pas encore de nom d’utilisateur ? Sachez qu’il est possible d’utiliser l’utilisateur « root » dans ce genre de cas.

Pour le transfert de la clé SSH publique, Ubuntu propose l’outil ssh-copy-id par défaut. La syntaxe de la commande correspondante est la suivante :

ssh-copy-id username@ip-adresse/domain
bash

Lors de votre première connexion à l’hôte cible, le terminal renvoie un message précisant qu’il est impossible d’établir l’authentification de l’hôte (« Authenticity of host […] can’t be established » en anglais). Tapez « yes » et confirmez votre entrée pour continuer votre configuration.

Transfert de la clé SSH publique par l’intermédiaire du terminal Ubuntu
Transfert de la clé SSH publique par l’intermédiaire du terminal Ubuntu.

Le service va maintenant rechercher la clé que vous avez créée. S’il la trouve, vous pouvez poursuivre le processus. Pour ce faire, saisissez le mot de passe permettant la connexion au système cible. Vous marquez ainsi la fin de la configuration. Si la clé publique a bien été transférée, le service renvoie le résultat suivant :

Clé SSH sous Ubuntu : transfert vers le système cible réussi
Clé SSH sous Ubuntu : transfert vers le système cible réussi.

Étape 3 : procéder à l’authentification SSH au niveau de l’hôte cible

Vous pouvez désormais vous connecter à loisir sur l’appareil ou le serveur disposant de la clé publique à l’aide du protocole SSH. Comme pour le transfert de la clé, vous devez utiliser le nom d’utilisateur et l’adresse IP ou le domaine de l’hôte cible. Vous devez intégrer ceux-ci à votre commande, dans l’ordre suivant :

ssh username@ip-adresse/domain
bash

Si vous avez défini une phrase secrète pour la paire de clés, celle-ci vous est alors demandée. Saisissez donc la phrase correspondante et sélectionnez « Déverrouiller » pour vous connecter au système cible.

Clé SSH sous Ubuntu : phrase secrète à renseigner
Clé SSH sous Ubuntu : phrase secrète à renseigner.

Étape 4 : désactiver la saisie du mot de passe

Si vous avez réussi à vous connecter à l’aide de la paire de clés SSH, vous n’aurez plus besoin de recourir à la connexion à l’aide d’un mot de passe. En règle générale, cette procédure d’authentification reste toutefois active, ne serait-ce que pour les personnes non autorisées souhaitant accéder au système, notamment par l’intermédiaire d’une attaque par force brute.

Pour plus de sécurité à cet égard, vous pouvez désactiver la connexion par mot de passe sur le serveur ou sur l’appareil cible. Pour ce faire, connectez-vous en utilisant le protocole SSH, puis ouvrez le fichier de configuration su service SSH :

sudo nano /etc/ssh/sshd_config
bash

Dans le fichier de configuration, trouvez ensuite l’entrée « PasswordAuthentication » et réglez cette dernière sur « no ».

Modification du fichier de configuration du service SSH
Modification du fichier de configuration du service SSH.

Enregistrez les modifications que vous avez apportées au fichier de configuration, puis redémarrez le service SSH en vous servant de la commande suivante :

sudo systemctl restart ssh
bash

Transférer manuellement une clé SSH sous Ubuntu

L’outil ssh-copy-id, donc il est question à l’étape 2, n’est pas disponible sur tous les systèmes. Si le vôtre est concerné, sachez qu’il est très facile de transférer manuellement la clé publique créée par vos soins vers le système cible.

Commencez par afficher votre clé publique en exécutant la commande suivante :

cat ~/.ssh/id_rsa.pub
bash
Génération de la clé SSH publique dans le terminal Ubuntu
Génération de la clé SSH publique dans le terminal Ubuntu.

Maintenant, copiez cette clé dans le fichier « authorized_keys » du répertoire « ssh » de l’hôte cible. Si ce répertoire n’existe pas encore, vous devez le créer en faisant appel à la commande suivante :

mkdir -p ~/.ssh
bash

Pour le transfert de la clé, il vous suffit ensuite de lancer cette commande :

echo clé >> ~/.ssh/authorized_keys
bash

Dans cette commande, remplacez « clé » par le résultat obtenu précédemment, en commençant par « ssh-rsa ».

Enfin, veillez à supprimer toutes les habilitations des groupes et autres autorisations pour le répertoire « ssh » et le fichier « authorized_keys ».

chmod -R go= ~/.ssh
bash
Conseil

Pour plus d’informations sur le protocole SSH et le système d’exploitation Ubuntu, consultez les articles suivants issus de notre guide numérique :