L’outil Secure Shell (SSH) est la norme pour accéder à des machines Linux distantes. SSH a remplacé telnet il y a longtemps, afin d’ajouter une couche de sécurité bien nécessaire pour les connexions à distance.
Cela ne signifie pas pour autant que la configuration par défaut de SSH soit la meilleure option pour ceux qui sont soucieux de la sécurité de leurs systèmes. Par défaut, SSH fonctionne avec des connexions traditionnelles par utilisateur et mot de passe. Et même si ces connexions sont beaucoup plus sûres qu’avec telnet, vous devez toujours taper et envoyer un mot de passe via internet.
Si quelqu’un interceptait ce mot de passe, il pourrait accéder à vos machines (s’il connait également votre nom d’utilisateur).
Il existe une meilleure solution. Il s’agit de l’authentification par clé SSH. Avec l’authentification par clé, vous contournez l’authentification par nom d’utilisateur et mot de passe et la remplacez par une paire de clés. Pourquoi est-ce utile ? La raison principale est que cela ajoute une sécurité supplémentaire puisque le seul moyen d’accéder à ces serveurs (lorsqu’ils sont configurés correctement) est de disposer de la paire de clés correspondante.
Voici comment cela fonctionne :
-
- Vous générez une clé SSH.
-
- Vous téléchargez la clé publique sur un serveur distant.
-
- Vous configurez SSH pour qu’il autorise uniquement l’authentification par clé.
-
- Vous vous connectez à partir d’un machine qui contient la clé privée correspondant à la clé publique sur le serveur.
Une fois configuré correctement, l’accès à distance au serveur ne sera autorisé que si vous disposez de la clé privée adaptée. Sans cette clé, vous ne pouvez pas accéder au serveur. Tant que vous gardez cette clé privée, tout va bien.
Mais comment configurer cela ?
Prérequis
Pour configurer l’authentification par clé SSH, vous aurez besoin d’au moins deux machines Linux. Une à laquelle vous vous connectez et une à partir de laquelle vous vous connectez. Je vais faire la démonstration avec Pop!_OS comme machine de test et Ubuntu Server comme machine distante. Cela devrait fonctionner de la même manière sur presque toutes les distributions Linux.
Vous aurez également besoin d’un utilisateur avec les privilèges sudo. Vous devez également vous assurer que vous avez le même nom d’utilisateur sur les deux machines, locale et distante.
Une fois cela fait, attaquons-nous aux choses sérieuses.
Comment configurer l’authentification par clé SSH sous Linux pour des connexions plus sûres ?
1. Ouvrez la fenêtre du terminal
Sur votre système d’exploitation, ouvrez une fenêtre de terminal.
2. Générez votre paire de clés SSH
Dans la fenêtre du terminal, générez votre paire de clés SSH à l’aide de la commande :
Il vous sera d’abord demandé où vous souhaitez enregistrer la clé. Je suggère de l’enregistrer à l’emplacement par défaut, donc appuyez simplement sur Entrée lorsque vous y êtes invité. Il vous sera ensuite demandé de saisir et de vérifier un mot de passe pour la paire de clés. Assurez-vous que ce mot de passe est unique et robuste.
3. Copiez votre nouvelle clé publique sur le serveur distant
C’est ici que les choses se compliquent un peu. Vous devez envoyer la clé publique au serveur distant. Pour cela, vous devez connaître l’adresse IP du serveur. Vous pouvez obtenir l’adresse IP du serveur en vous connectant à celui-ci et en exécutant la commande ip a. Armée de cette information, retournez sur votre machine de test et envoyez la clé publique au serveur avec la commande :
Où « SERVER » correspond à l’adresse IP du serveur distant.
Vous serez invité à saisir le mot de passe sur le serveur distant. Une fois que vous vous êtes authentifié avec succès, la clé publique sera copiée et l’authentification par clé SSH est prête. Lorsque vous tenterez de vous connecter au serveur distant, vous serez désormais invité à saisir le mot de passe de votre clé SSH et non plus celui de l’utilisateur.
Comment configurer le serveur distant pour l’authentification par clé SSH ?
Maintenant que vous avez copié votre clé, connectez-vous à la machine distante. Ce que nous allons faire désormais, c’est configurer le serveur SSH pour qu’il n’autorise que les connexions via les clés SSH.
Une chose à garder en tête tout de même est qu’une fois cette option configurée, seules les personnes ayant une authentification par clé SSH configurée sur la machine seront autorisées à y accéder. Pour cette raison, vous devez vous assurer que vous avez copié les clés SSH de tous les ordinateurs que vous souhaitez utiliser pour vous connecter au serveur distant.
Ceci étant dit, ouvrez le fichier de configuration SSH sur le serveur distant avec la commande :
-
sudo nano /etc/ssh/sshdconfig
Dans ce fichier, recherchez la ligne :
-
PasswordAuthentication yes
Changez cette ligne en :
-
PasswordAuthentication no
Sauvegardez et fermez le fichier. Redémarrez SSH avec :
-
sudo systemctl restart sshd
Désormais, la seule façon de vous connecter à distance à cette machine est de procéder à l’authentification via la clé SSH. Toute machine qui ne possède pas de paire de clés correspondante se verra refuser l’accès.
Source : « ZDNet.com »
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#appId=243265768935&xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));