Se connecter en utilisant des clés SSH
Category:Linux,Sécurité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