Se connecter en ssh avec une clé publique

L’utilisation d’une clé publique permet d’éviter de devoir saisir son mot de passe à chaque connexion.
Cet article détaille l’utilisation d’une clé publique pour se connecter à un serveur à partir d’un ordinateur utilisant linux (Ubuntu pour être précis). Si vous utilisez Windows, il est donc possible que ce tutoriel ne fonctionne pas (en particulier la dernière partie avec l’agent ssh).

Le principe

On génère en local une clé publique et une clé privée. En suite, on envoie la clé publique sur le serveur qui pourra alors nous reconnaître grâce à notre clé privée.

Générer les clés

Sur votre ordinateur local, saisir la commande :

$ ssh-keygen -t rsa -b 4096

-t rsa permet de choisir la méthode de chiffrement RSA (la plus utilisée actuellement). -b 4096 spécifie la taille de la clé (4096 est un minimum actuellement, vous pouvez aller jusqu’à 8192).

Generating public/private rsa key pair.
Enter file in which to save the key (/home/login/.ssh/id_rsa):

Appuyez sur entrée afin de garder l’emplacement par défaut.

Enter passphrase (empty for no passphrase):

Entrez ici une passphrase de façon à consolider votre clé. Ainsi même une personne en possession de votre clé privée ne pourra pas se connecter au serveur.

Enter same passphrase again:

Entrez à nouveau votre passphrase.
Il s’affiche alors la confirmation de la création de vos clés :

Your identification has been saved in /home/login/.ssh/id_rsa.
Your public key has been saved in /home/login/.ssh/id_rsa.pub.
The key fingerprint is:
9f:d5:6f:2b:d7:5b:f8:ce:83:c5:31:4c:97:1a:2a:57 login@monordi
The key's randomart image is:
+--[ RSA 4096]----+
|                .|
|             E o.|
|            o = .|
|         . o o + |
|        S o . o o|
|         . o   = |
|          o   + =|
|             o *+|
|              o+*|
+-----------------+

Vous avez bien généré vos clés. Il faut maintenant envoyer la clé publique sur le serveur.

Envoyer la clé sur le serveur

Toujours en local, on envoie la clé publique sur le serveur :

$ ssh-copy-id -i ~/.ssh/id_rsa.pub toto@monserveur.fr

(attention à éventuellement rajouter le port pour ssh si vous l’avez changé)

Rentrez votre mot de passe pour la dernière fois.

Maintenant on vous demandera votre passphrase pour vous connecter à votre serveur. Pour éviter de la saisir à chaque connexion il faut l’ajouter à l’agent ssh.

Ajouter la passphrase à l’agent ssh

Pour ajouter la passphrase à l’agent ssh sous ubuntu, il suffit de lancer la commande :

$ ssh-add

et de saisir la passphrase.

Voilà, maintenant vous pouvez vous connecter à votre serveur sans saisir de mot de passe.

Si vous voulez ni saisir votre passphrase à chaque connexion ni utiliser l’agent ssh, ne donnez pas de passphrase lors de la création des clés. La connexion sera alors moins sécurisée mais elle sera immédiatement automatique.

Sources

tuteurs.ens.fr – ssh
prendreuncafe.com – Installer sa clé SSH sur un serveur distant