Table des matières

Configurer une authentification avec un couple de clés privée/publique SSH

Présentation

Pour administrer un serveur Linux, vous pouvez utiliser le compte root ou, ce qui est fortement conseillé, un compte que vous avez créé et à qui vous avez permis une élévation de privilèges.

Si vous gérez un autre serveur, il est également fortement conseillé d'utiliser un mot de passe différent. Cette solution n'est pas satisfaisante et peu sécurisée si vous devez gérer de nombreux serveurs.

Par ailleurs cela est problématique si vous avez des tâches d'administration à automatiser car la saisie manuelle du mot de passe sera nécessaire ou bien il faudra indiquer le mot de passe dans les scripts ce qui est problématique si vous n'avez pas de solution pour les chiffrer. Les solutions possibles :

Vous aller configurer le compte root ou le compte linux que vous avez créé afin de permettre d'ouvrir une session en utilisant une clé publique SSH. Vous utiliserez votre propre clé publique SSH pour vous connecter. Vous permettrez à l'enseignant de se connecter en simple utilisateur avec un compte que vous devez créer et appeler ensbtssio avec sa clé publique SSH.

Après la création de votre couple de clés Privée/publique, communiquez aux enseignants votre clé publique dans le dossier partagé Classe.

Votre clé publique sera rajoutée à la page des clés SSH du BTS SIO à la page :

  • En utilisant mot de passe, vous utilisez un seul facteur d'authentification.
  • En utilisant une clé publique SSH, vous utilisez également un seul facteur d'authentification.

Cependant, vous pouvez utiliser la même clé publique SSH sur plusieurs serveurs en ne retenant qu'un seul mot de passe, celui de la passphrase de votre clé privée.

En général on désactive ensuite l'authentification par mot de passe sur les serveurs afin de n'autoriser que l'authentification par clé SSH publique.

Pour en savoir plus : https://www.it-connect.fr/chapitres/authentification-ssh-par-cles/

Générer une paire de clé SSH depuis un client OpenSSH

Générer une paire de clés privée/publique depuis un client Windows ou linux.

Il est conseillé de protéger l'utilisation de la clé privée avec une passphrase.

$ ssh-keygen
 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/centrecallbd/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/centrecallbd/.ssh/id_rsa.
Your public key has been saved in /home/centrecallbd/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0rjedyVuT2fzEJHgw5I9lfmTsQ6MHSD87Xrr/aXE3r4 centrecallbd@Ch2Lab1
The key's randomart image is:
+---[RSA 2048]----+
|        .. .o .o |
|         ..= +oo |
|          + @ +.+|
|       o   + B =.|
|      o S   . + .|
|       o    .o.o |
|      .    ..o=.+|
|     . .  ..+=.*+|
|      . .. oo+=EB|
+----[SHA256]-----+
$

Dans le dossier caché .ssh (sous Windows Linux ou MacOsX) vous avez votre couple de clés privée (id_rsa) et publique (id_rsa.pub).

$ ls .ssh
id_rsa  id_rsa.pub
$

Un autre fichier know_hosts sera ensuite créé dans le dossier .ssh afin de contenir les clés publiques des serveurs sur lesquels vous vous êtes authentifié avec un mot de passe ou une clé SSH publique.

  • Pour retrouver l'entrée d'un nom d’hôte connu dans known_hosts:
$ ssh-keygen -H  -F <hostname or IP address>
  • Pour supprimer une seule entrée de known_hosts:
# ssh-keygen -R <hostname or IP address>

Configurer un accès SSH avec une clé SSH depuis un client OpenSSH

$ ssh-copy-id utilisateur@IP_ordinateur_cible

La clé publique est copiée dans le fichier .ssh/authorized_keys du serveur distant.

La commande ssh-copy-id n'est pas disponible sous Windows. Vous pouvez alors :

  • utiliser la commande scp pour copier le fichier id_rsa.pub dans le dossier l'utilisateur ;
  • ouvrir une session ssh pour pouvoir ensuite ajouter le contenu du fichier id_rsa.pub dans le fichier authorized_keys :
C:> scp .ssh/id_rsa.pub compteutilisateur@adresseip:/home/compteutilisateur/
C:> ssh compteutilisateur@adresseip
$ cat id_rsa.pub >> .ssh/authorized_keys

Vous devez maintenant pouvoir vous connecter sans mot de passe au serveur distant :

$ ssh utilisateur@IP_ordinateur_cible

Il est fortement conseillé ensuite de désactiver l'authentification par mot de passe en modifiant le fichier de configuration du service ssh sur le serveur distant /etc/ssh/sshd_config :

PasswordAuthentication no
ChallengeResponseAuthentication no
$ sudo systemctl restart ssh

Pour en savoir plus :

Génération des clés avec PuttyGen

Configuration de l'accès SSH

Accès au serveur en SSH avec Putty