Connexion sécurisée au serveur avec authentification par clé SSH

Retour aux actualités

Publié sur 28 nov. 2023.

Via SSH, également connu sous le nom de Secure Shell, est un protocole qui permet de gérer des machines en toute sécurité via Internet. C'est le moyen privilégié pour gérer les machines Unix depuis des années et il est disponible depuis peu sous Windows.

Un utilisateur peut simplement se connecter en utilisant son nom d'utilisateur et son mot de passe. Mais il existe aussi une solution plus sûre et plus pratique : l'authentification par clé SSH.

SSH chez Kinamo

En tant que fournisseur de services gérés, Kinamo est quotidiennement confronté à la gestion de serveurs, qu'il s'agisse de machines internes ou de serveurs en nuage que nous gérons pour nos clients. Le nombre de fois qu'un serveur est connecté est presque impossible à suivre.

Il est donc important de pouvoir le faire en toute sécurité. Ce n'est pas toujours facile, car les serveurs - tout comme une application ou un autre appareil - attendent souvent qu'un nom d'utilisateur et un mot de passe soient introduits.

La transmission de mots de passe, la fourniture de données d'authentification à des clients, à des tiers, etc. est un problème épineux en matière de sécurité et constitue également un maillon faible dans l'ensemble de la chaîne de sécurité.

C'est pourquoi nous souhaitons vous présenter une méthode d'authentification que nous estimons très appréciée sur les serveurs que nous gérons !

Avantages de SSH

Travailler avec une clé SSH présente un certain nombre d'avantages :

  • Il n'est pas nécessaire d'envoyer un mot de passe.
  • Il est possible de désactiver la "connexion par mot de passe" sur le serveur. C'est une solution parfaite pour contrer les attaques dites "par force brute".
  • Il est possible d'utiliser sa propre clé sur différents serveurs. Vous ne devez donc pas conserver une liste de mots de passe.
  • Votre clé publique peut être partagée avec d'autres personnes sans aucun problème. Ils peuvent installer cette clé publique sur un serveur et vous en donner l'accès. Par exemple, nous recommandons aux développeurs web qui doivent travailler sur le serveur d'un client de s'authentifier via une clé SSH.

Une chose qui présente des avantages a toujours au moins un inconvénient. L'inconvénient est que votre clé SSH privée est stockée sur le disque.

Si quelqu'un s'empare de cette clé, il peut également accéder à toutes les machines auxquelles vous avez accès.

Il est donc fortement recommandé de protéger cette clé privée par un mot de passe. En utilisant une clé avec un mot de passe, vous disposez immédiatement d'une authentification à deux facteurs : votre clé et le mot de passe.

Vous pouvez facilement définir le mot de passe lors de la création de la clé.
C'est génial, mais comment commencer ?

Création d'une clé

Pour créer des clés SSH, nous utilisons OpenSSH.

OpenSSH est - peut-on dire sans risque - dans la pratique le client SSH par défaut.
OpenSSH a toujours été disponible pour les systèmes d'exploitation Mac OS et Linux et existe depuis peu pour Windows 10 et Windows Server 2019.

Si vous souhaitez utiliser SSH sur un système d'exploitation Windows, vous devez activer la fonctionnalité "OpenSSH Client".

Vous la trouverez sous "Apps > Apps et fonctionnalités > Fonctionnalités optionnelles".

Apps features 1
Apps features 2
Apps features 3

Les utilisateurs de Mac OS et de Linux disposent normalement déjà du client SSH sur leur système. Vous pouvez le tester avec la commande suivante :

ssh -V OpenSSH_9.2p1 Debian-2+deb12u5, OpenSSL 3.0.15 3 Sep 2024

Si OpenSSH est installé sur votre ordinateur, la création de votre propre clé SSH est un processus simple. Vous pouvez le faire à l'aide de la commande ssh-keygen.

Il vous sera demandé où vous souhaitez stocker la clé et quel mot de passe vous souhaitez définir.
Pour choisir l'option par défaut, il vous suffit d'appuyer sur la touche Entrée.

kinamo@debian:/$ ssh-keygen
Generate a public/private rsa key pair.
Enter the file in which you wish to save the key (/home/kinamo/.ssh/id_rsa): 
Create directory '/home/kinamo/.ssh'.
Enter the passphrase (empty if no passphrase has been entered): 
Enter the same passphrase again: 
Your login has been saved in /home/kinamo/.ssh/id_rsa.
Your public key has been saved in /home/kinamo/.ssh/id_rsa.pub.
The key fingerprint is :
SHA256:D7IyqOyoO+G8QbjE5RoCAdhMsTVM5IZPvxRlTMCY/M4 kinamo@debian
The random key image is :
+---[RSA 2048]----+
|=+o*=+.++ |
|..o==..o. |.
|. o.+.. |
|+ o+ ...         |
|...o= ..o+ S
|=.o. .E+ o |
|++. o o . |
|++. o |
|B*.              |
+----[SHA256]-----+

Après avoir créé les clés, vous pouvez installer la clé publique sur une machine.

Dans la sortie de ssh-keygen, vous verrez "Your public key has been saved in /home/kinamo/.ssh/id_rsa.pub.".

Votre clé publique se trouve donc à cet endroit dans le fichier id_rsa.pub

Ouvrez le fichier à cet endroit avec le bloc-notes ou un autre éditeur de texte.
Il devrait ressembler à ceci :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+qYhABkyQ39Bjdaw9Uscu5ca+9APZJyIcjz3fJZmhpTe2+AyIg3aj/la0iRrymMBd3l7x3FBmmaXfek52AS/jsRhTRDS5IQ/yNFocKjqDur36jByANFGOLVy6aHV2sXNXkVqF7UX9CgA2sxNIZd4K7qJte8lh5781zdMX3Vsdn0NyvXw30HmZfv79jhtgeEZe7ER6SCAEHJ5oAa3hiqClvU8f4Chy/NpsKmGIcloLBXBpV/nLSTcmw+8Rdk5R2ilO1Dl+6sz38FLTFBjigj++IvleF0W/tclqhFEneen0Jryb9zB43TmeZMAEfbnycCECywKO9/ok8F97urVbdGSFkinamo@debian

Installer votre clé

La manière la plus simple d'installer votre clé sur une machine est d'utiliser ssh-copy-id.

Ce programme installe votre clé complètement automatiquement.

Vous devez vous connecter au serveur une fois en utilisant votre mot de passe. Dans cet exemple, nous allons installer notre clé sur le serveur remote_server en utilisant la commande ssh-copy-id kinamo@remote_server.

kinamo@debian:/$ ssh-copy-id kinamo@remote_server
 /usr/bin/ssh-copy-id : INFO : Source of the key(s) to be installed: "/home/kinamo/.ssh/id_rsa.pub".
 Authenticity of host 'remote_server (xx.xx.xx.xx)' cannot be established.
 The ECDSA key fingerprint is SHA256:.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
 Are you sure you want to continue logging in (yes/no)? yes
 /usr/bin/ssh-copy-id : INFO : login attempt with new key(s), to filter out those already installed.
 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you're asked now, it's to install the new key(s).
 kinamo@remote_server password : 
 
 kinamo@debian:/$ ssh-copy-id kinamo@remote_server
 /usr/bin/ssh-copy-id : INFO : Source of key(s) to be installed: "/home/kinamo/.ssh/id_rsa.pub".
 /usr/bin/ssh-copy-id : INFO : connection attempt with new key(s), to filter out those already installed
 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you're asked now, it's to install the new key(s)
 kinamo@remote_server password : 
 
 Number of keys added: 1
 
 Now try connecting to the machine with :   "ssh 'kinamo@remote_server'"
 and check that only the keys you wanted have been added.

Si ssh-copy-id n'est pas disponible sur votre système (malheureusement, pour les utilisateurs de Windows), vous pouvez également installer la clé manuellement.

Vous vous connectez ensuite au serveur sur lequel vous souhaitez placer votre clé via SSH. via SSH.

Une fois connecté au serveur, créez un nouveau dossier dans le dossier personnel appelé .ssh contenant le fichier authorised_keys.

Ouvrez ce fichier avec un éditeur de texte et placez-y le contenu de votre fichier id_rsa.pub.

ssh kinamo@remote_server
kinamo@remote_server:~$ mkdir ~/.ssh
kinamo@remote_server:~$ vim ~/.ssh/authorized_keys

Une fois la clé installée, vous pouvez vous déconnecter.

Lorsque vous vous reconnectez maintenant, vous ne devez plus introduire votre mot de passe d'utilisateur.

Bonus : désactivation de la fonction "se connecter à l'aide d'un mot de passe"

Si vous pouvez vous connecter à l'aide de votre clé SSH, vous pouvez prendre une mesure supplémentaire pour sécuriser votre serveur. Vous pouvez en effet désactiver l'option "se connecter à l'aide d'un mot de passe".

Ainsi, les attaques par force brute sur votre serveur SSH n'ont plus aucune chance. Cela vaut vraiment la peine d'y réfléchir !

Ouvrez la configuration de votre serveur SSH :
vim/etc/ssh/sshd_config

Recherchez l'option PasswordAuthentication.

Par défaut, elle se trouve dans les commentaires et est définie à"yes".
Retirez l'option des commentaires et mettez-la à"no" :

PasswordAuthentication no

Redémarrez maintenant le service SSH :
kinamo@remote_server:~$ sudo systemctl restart ssh
A partir de maintenant, la connexion à votre serveur se fait uniquement via votre clé SSH !

Kinamo

Sélectionnez votre langue