Se connecter en utilisant des clés SSH

  • -

Se connecter en utilisant des clés SSH

Category:Linux,Sécurité Tags : 

Si l’on souhaite automatiser des tâches administratives, comme lancer des sauvegardes sans mettre chaque fois le mot de passe, il est nécessaire d’implémenter des clés ssh pour approuver la sécurité des hosts entre eux.

L’exemple utilise ici toujours l’utilisateur root. Ce n’est pas forcément une bonne idée…

Avertissement

Ce tutoriel est livré sans garanties aucune, et vous seuls êtes responsables de son éventuelle implémentation.

La plupart des tutoriaux proposent de créer une clé avec la commande

ssh-keygen -t rsa

Toutefois, il s’agit d’un ancien algorithme basé sur la difficulté de factoriser des grands nombre. Aujourd’hui ce niveau de sécurité est caduc, quand bien même il faudrait au moins utiliser une clé de 4096 bits avec l’option ssh-keygen -t rsa -b 4096

ssh-keygen -t dsa

Un autre algorithme ancien qui n’est plus du tout recommandé…

ssh-keygen -t ecdsa -b 521

Un nouvel  algorithme utilisé par le gouvernement américain, dont la taille des clés peut être 256, 84, and 521 bits. Toujours utiliser la version looongue

Et le bon est…

ssh-keygen -t ed25519

Un nouvel algorithme implémenté maintenant dans OpenSSH. Pas forcément implémenté dans tous les systèmes, c’est pourtant le choix à retenir par défaut.

Etape 1 : Créer votre pair de clés

Ouvrir un terminal shell et taper

ssh-keygen -t ed25519

Il vous sera demandé dans quel fichier enregistrer la clé. Laisser les propositions par défaut.

[root@localhost ~]# ssh-keygen -t ed25519

Generating public/private ed25519 key pair.

Enter file in which to save the key (/root/.ssh/id_ed25519):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_ed25519.

Your public key has been saved in /root/.ssh/id_ed25519.pub.

The key fingerprint is:

f2:58:5e:39:0f:d8:43:10:07:e7:0b:33:bb:8b:b7:8d root@localhost.localdomain.ch

The key's randomart image is:

+--[ED25519  256--+

|        +oo      |

|         =       |

|        + o      |

|         O o     |

|      . S O      |

|       * o =     |

|      . +   .    |

|       ..+       |

|      ..E..      |

+-----------------+

[root@localhost ~]#

Les deux fichiers suivants sont créés

/root/.ssh/ id_ed25519                La clé privée, qu’il ne faudra jamais partager…

/root/.ssh/ id_ed25519.pub       La clé publique, qui sera copiée sur le host que l’on souhaitera atteindre sans le mot de passe.

Il est possible de changer ou d’ajouter le mot de passe aux fichiers par la suite en tapant

Ssh-keygen -p

Etape 2 : Copier la clé publique sur la machine distante

Lancer l’utilitaire suivant suivis du nom du host

ssh-copy-id root@192.168.50.133

Ceci ajoutera automatiquement la clé publique la plus récemment modifiée sur la machine locale en mettant à jour le fichier  ~/.ssh/authorized_keys sur la machine distante. (Si le fichier existe déjà, l’information sera simplement ajoutée).

Le résultat sera le suivant dans le shell

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@192.168.50.133's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.50.133'"

and check to make sure that only the key(s) you wanted were added.

Note : Si l’on ne souhaite pas copier des clés se trouvant dans plusieurs fichiers, on peut aussi spécifier le fichier à copier

ssh-copy-id -i ~/.ssh/id_ecdsa.pub root@192.168.50.133

Ensuite on pourra se connecter en utilisant…

ssh root@192.168.50.133

directement sans mot de passe

Auteur: OBF