Dernière modification : 07/02/2021

Authentification ssh par clé privée

Dans cet article nous allons voir comment s'authentifier dans un serveur linux avec une clé privée SSH.

1. Introduction

L'authentification via une clé privée augmente la sécurité d'un serveur au niveau du processus de connexion. A la place d'un mot de passe uniquement, il est nécessaire de fournir les deux informations suivantes :

  • une clé privée (fichier que nous allons générer)
  • un mot de passe permettant de décrypter la clé (peut être facultatif)

2. Génération des clés

Nous allons générer la clé privée et la clé publique. La clé privée sera à garder en sécurité sur son poste. Cette dernière ne sera pas à fournir au serveur. Quand à la clé publique, elle peut être partagée et être connue de tous. Elle sera par conséquent stockée sur le serveur.

2.1 Sous linux

Génération de la paire de clé :

ssh-keygen -t rsa -b 4096 -C votre@email.com

Nous générons des clés RSA avec pour taille 4096 bits. Le mail est fourni afin de se repérer dans le cas ou plusieurs clés sont à générer.

Remarques :

  • L'adresse mail est à remplacer par le votre.
  • Si vous ne mettez pas de passphrase, alors aucun mot de passe ne sera demandé lors de la connexion.

Les clés sont générées par défaut dans le dossier ~/.ssh/. Deux fichiers ont été créés par défaut :

  • id_rsa.pub (clé publique)
  • id_rsa (clé privée)

2.2 Sous windows

Utiliser l'article suivant : https://phoenixnap.com/kb/generate-ssh-key-windows-10

3. Mise en place de la clé publique sur le serveur

Il est maintenant nécessaire de renseigner la clé publique dans le fichier ~/.ssh/authorized_keys. Il est utilisé lors de l'authentification afin de déterminer la conformité de la clé privée de l'utilisateur.

3.1 Utilisation de ssh-copy-id (linux)

Utiliser la commande suivante afin d'envoyer la clé publique au serveur :

ssh-copy-id -i  @

Si le port SSH n'est pas le port standard 22 :

ssh-copy-id -i  -p  @

Exemple :

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 12345 alex@123.456.789.123

3.2 Autre méthode

Copier le contenu de votre clé publique dans le dossier ~/.ssh/authorized_keys du serveur.

4. Connexion

Vous devriez pouvoir vous connecter à votre serveur linux sans problème via la commande suivante :

ssh -p  -i  @

5. Suppression de la clé privé à la connexion

Pour ne pas fournir le fichier de la clé privé lors de la connexion (si vous avez plusieurs clés privé), modifier ou créer le fichier ~/.ssh/config sur votre poste utilisateur et ajouter les lignes suivantes :

Host 
	HostName 
	User 
	Port 
	IdentityFile 
  • HostName : Adresse ip ou nom de domaine du serveur
  • User : Utilisateur
  • Port : Numéro du port
  • IdentifyFile : Chemin vers la clé privée

Lors de la prochaine connexion, vous pourrez vous connecter via les deux commandes suivantes :

ssh -p  @
ssh 

6. Conclusion

Nous avons vu comment s'authentifier dans un serveur linux avec une clé privée SSH. Il serait intéressant maintenant de voir comment ajouter une authentification double facteur lors de la connexion.