Pour s’authentifier sur un serveur, on utilise essentiellement des couples d’identifiants / mots de passe. Il faut savoir qu’il existe des méthodes d’authentification fortes qui permettent de mieux sécuriser vos accès, notamment l’authentification par clé publique. On génère une paire de clés, composée :

  • d’une clé publique (que tout le monde peut connaître),
  • d’une clé privée (que vous devez conserver secrète, propre à vous) : cette dernière vous permettra de créer des signatures, qui pourront être vérifiées grâce à la clé publique.

J’ai déjà traité de la création d’une paire de clé SSH sur Windows, voyons maintenant comment faire sur un OS Linux.

Cryptographie

Il s’agit de créer une paire de clés SSH, puis d’installer la clé publique sur le serveur distant, afin de pouvoir s’y connecter sans mot de passe (ou avec une passphrase).

La commande est la suivante :

1
ssh-keygen -t rsa -b 2048

Les options sont :

  • -t : pour préciser le type de clé, RSA ou DSA,
  • -b : pour préciser la taille de la clé, ici 2048 bits.

Note : on a vu précédemment qu’il était préférable de privilégier le cryptage RSA plutôt que DSA.

Voici le résultat :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
romain@mylaptop:~$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/romain/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/romain/.ssh/id_rsa.
Your public key has been saved in /home/romain/.ssh/id_rsa.pub.
The key fingerprint is:
62:fc:f6:71:c4:d5:55:a5:d3:d5:77:9d:55:2f:32:20 romain@mylaptop
The key's randomart image is:
+--[ RSA 2048]----+
|               .%|
|        T .   .+O|
|       . . . .o.*|
|     .      + ..o|
|      + P  o o . |
|     . o  . o    |
|        .  o     |
|      .....      |
|         .....   |
+-----------------+

On peut voir que :

  • la clé privée a été sauvée dans le fichier /home/romain/.ssh/id_rsa
  • la clé publique a été sauvée dans le fichier /home/romain/.ssh/id_rsa.pub

Lors de la génération de la clé, il vous est demandé une « passphrase » :

  • si vous en renseigné une, vous devrez la renseigner à chaque fois pour vous connecter au serveur (authentification forte avec un couple clé / mot de passe),
  • si vous n’en spécifier pas, vous pourrez vous connecter au serveur sans mot de passe.

Il reste à copier la clé publique sur le serveur sur lequel on souhaite se connecter.

1
ssh-copy-id -i ~/.ssh/id_rsa.pub romain@monserveurquidechire.net

Note : si votre serveur SSH n’écoute pas sur le port par défaut (TCP/22), il est possible de spécifier un autre port à la commande ssh-copy-id avec le paramètre -p et l’ajout de simple quote (voir exemple ci-dessous).

1
ssh-copy-id '-p 22222 -i ~/.ssh/id_rsa.pub romain@monserveurquidechire.net'

La clé publique sera ajoutée dans le fichier ~/.ssh/authorized_keys.

Voilà ! Il est maintenant possible de vous connecter à votre serveur sans mot de passe (si vous n’avez pas spécifié de passphrase lors de la création de la clé).