>
.
*
X
}
<

NOUS LES DEVS

ssh-keygen

Créer une clé SSH pour se connecter à un serveur

Niveau : intermédiaire
</> </> </>

Connexion SSH

Il n’y a pas longtemps je t’ai expliqué comment te connecter en ssh avec un login et un mot de passe. Aujourd’hui, je vais te montrer comment réaliser une connexion sans mot passe.

Sans mot de passe ? Pas tout à fait, en fait je vais me connecter avec ce qu’on appelle une clé SSH, qui sera stockée sur ma machine et qui m’évitera de retaper le mot de passe à chaque fois.

Couple de clés

Cette fameuse clé dite « clé SSH » est en fait une paire de clés RSA, c’est-à-dire qu’il y a deux clés… Une clé privée et une autre publique qui sont liées par un procédé mathématique. La clé privée ne doit jamais être communiquée et doit rester secrète. La clé publique quant à elle peut être échangée avec n’importe qui. En fait, là le but va être de la poser sur le serveur sur lequel je veux me connecter.

Créer une clé

Pour créer une clé, ouvre le terminal et saisis la commande ci-dessous, le paramètre t spécifie le type de chiffrement et le paramètre b le nombre de bit.

ssh-keygen -t rsa -b 4096

Le programme va te demander un nom de fichier, par convention c’est « id_rsa » qui est utilisé, mais tu peux nommer ta paire de clés comme tu le souhaites. Là dans l’exemple je la nomme « test_rsa » et je la stocke dans le dossier .ssh de mon répertoire utilisateur.

#Remplace nouslesdevs par ton nom d'utilisateur
Enter file in which to save the key (/Users/nouslesdevs/.ssh/id_rsa): /Users/nouslesdevs/.ssh/test_rsa

Ensuite tu dois entrer une passphrase, une sorte de mot de passe au cas tu as plusieurs utilisateurs sur ta machine, pour ne pas qu’ils puissent utiliser tes propres clés. Pour l’exemple, laisse vide en appuyant simplement sur enter, et confirme aussi la vérification de la passphrase.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

Et voici ce que tu devrais avoir dans ta console, si c’est le cas, ça veut dire que le couple de clés a bien été créé !

Your identification has been saved in /Users/nouslesdevs/.ssh/test_rsa.
Your public key has been saved in /Users/nouslesdevs/.ssh/test_rsa.pub.
The key fingerprint is:
SHA256:nATZTHGyAok9HUGPlcwC9FAflYTjVkNW/5tYr8CMOVQ nouslesdevs@nouslesdevs.local
The key's randomart image is:
+---[RSA 4096]----+
|   +=**X*B*o.    |
|  . +++*O*+  .   |
|     .+o=o .E .  |
|       +o. .   . |
|       .S .    ..|
|         . =  o +|
|          + +. o.|
|           . . . |
|              .  |
+----[SHA256]-----+

Public key

Avant de pouvoir commencer à se connecter avec la nouvelle clé SSH générée, il faut bien évidement ajouter la clé publique sur le serveur. C’est la commande ssh-copy-id qui va permettre de poser la clé publique sur le serveur distant, avec le paramètre -i elle permet de spécifier l’identity file.

#remplacer user_ssh par votre user ssh et l'IP 31.7.9.9 par l'IP de votre serveur
ssh-copy-id -i ~/.ssh/test_rsa.pub user_ssh@31.7.9.9

Entre ton mot de passe et confirme l’ajout de la clé, tu devrais voir le message suivant apparaître.

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'user_ssh@31.7.9.9'"
and check to make sure that only the key(s) you wanted were added.

Il faut vérifier que la clé est bien posée, connecte toi en ssh sur le serveur et rends toi là où sont stockées les clés.

cd .ssh

Tu devrais voir le fichier authorized_keys, un petit coup de VIM pour voir ce qu’il y a dedans.

vim authorized_keys

Si tout s’est bien passé, tu devrais retrouver le contenu de ta clé publique dans ce fichier, ça resemble à un truc du genre.

ssh-rsa AAA...AIzhw== nouslesdevs@nouslesdevs.local

Configurer la connexion

Maintenant que tout est prêt, tu vas pouvoir configurer la connexion avec ta clé privée. Rends toi dans le dossier .ssh et édite le fichier config.

vim ~/.ssh/config

Ajoute un Host avec le nom que tu veux (moi j’ai choisi tapion), et spécifie trois options, l’User qui est l’user SSH que tu utilises pour te connecter, le Hostname qui est l’adresse IP du serveur ou le nom de domaine et enfin l’IdentifyFile qui est le chemin vers ta clé privée.

Host tapion
        User user_ssh
        Hostname 31.7.9.9
        IdentityFile ~/.ssh/test_rsa

Se connecter

Pour te connecter sur le serveur en SSH, il te suffit de taper cette commande.

#remplace tapion par le nom de ton host
ssh tapion

Voilà, tu viens de réussir à configurer un connexion en SSH sur un serveur. Maintenant tu n’es plus obligé de rentrer ton mot de passe pour te connecter, c’est le programme qui va se servir de ta clé privée pour se connecter.

10/11/2017

Yann Vangampelaere - nouslesdevs -

NOUS LES DEVS

Vous aimez ce que je fais ? Vous voulez que j'en fasse plus ? dans le développement du blog.