Maintenant que nous avons créé nos clés SSH, nous allons voir comment les utiliser afin d’utiliser l’authentification par clés SSH.
Pour rappel, l’authentification par clés SSH est régie par 3 composantes :
- clé publique : c’est la clé que l’on partage avec les hôtes;
- clé privée : c’est la clé qui doit resté confidentielle;
- passphrase : le « mot de passe » qui sécurise notre clé privée.
Nous allons donc, dans un premier temps, fournir notre clé publique aux hôtes sur lesquels nous désirons nous authentifier.
Renseigner sa clé publique
L’authentification s’effectue sur une machine hôte pour un utilisateur donné.
Les clés publiques sont stockés dans le fichier ~/.ssh/authorized_keys.
On se connecte donc sur le serveur à « l’ancienne », c’est à dire en ssh par mot de passe:
1 |
$ ssh user@host |
puis on va éditer le fichier authorized_keys pour y ajouter notre clé publique:
1 |
$ nano ~/.ssh/authorized_keys |
On copie-colle enfin l’ensemble de notre clé publique à la fin de ce fichier. Il est tout à fait possible qu’il soit vide (voir même qu’on soit en train de le créer).
On enregistre (Ctrl + O) et on quitte (Ctrl + X) nano.
Ok, c’est beau ! Mais comment je récupère ma clé publique ?
Récupérer sa clé publique sous Linux
Comme nous l’avons vu dans le précédent article, sous linux, les clés sont généralement enregistrées dans les fichiers id_rsa (clé privée) et id_rsa.pub (clé publique).
Il suffit donc de lire le fichier ~/.ssh/id_rsa.pub pour récupérer sa clé publique sous linux :
1 |
$ nano ~/.ssh/id_rsa.pub |
Récupérer sa clé publique sous Windows
Sous Windows, les choses sont un peu plus fastidieuse…
Il faudra à nouveau utiliser le logiciel PuTTYgen pour extraire notre clé publique de la clé privée que nous avons précédemment générée.
- Ouvrir le logiciel PuTTYgen, cliquez sur le bouton « Load » et sélectionnez la clé privée :
- Renseigner la passphrase :
- Récupérer la clé publique associée à la clé privée :
Il ne reste plus qu’à coller notre clé publique dans le fichier ~/.ssh/authorized_keys de notre hôte distant.
Sous linux : se faciliter la vie
Sous linux il est tout à fait possible de grandement se faciliter la vie grâce à une seule ligne de commande qui s’occupe tout seule de récupérer votre clé publique et de l’ajouter à la liste des clés autorisées d’un hôte distant :
1 |
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host |
Un message vous indiquera probablement que l’identité du serveur hôte est actuellement inconnue et vous demandera si vous désirez poursuivre : répondez « yes ».
Pour finir, il faudra renseigner le mot de passe de l’utilisateur distant.
La sortie finale de la commande devrait ressembler à peu de choses près cela :
1 2 3 4 5 6 7 8 9 10 11 12 |
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host The authenticity of host 'host.tld (111.222.333.444)' can't be established. ECDSA key fingerprint is 81:36:dd:22:9b:34:1a:27:81:d5:23:fd:f4:60:ef:6b. Are you sure you want to continue connecting (yes/no)? yes /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 user@host's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user@host'" and check to make sure that only the key(s) you wanted were added. |
Et voilà, vous êtes maintenant prêt à utiliser l’authentification par clés SSH pour vous connecter à un serveur distant.