Connexion distante SSH par clef (sans mot de passe)

Le but

Ne plus avoir à saisir de mot de passe pour se connecter en SSH.

Dans mon cas (article suivant) j’ai besoin d’installer mes repo Git sur un serveur distant et d’y accéder par SSH

Les éléments fournis sont viables sur un environnement Debian et affiliés (Ubuntu/Mint…)

 

Installation des clients/serveurs SSH

Situons les choses : nous désirons que notre machine Malorean (c’est le nom de mon laptop :p ) – via le compte lde – puisse se connecter en SSH à la machine puppet1  ( mon serveur Debian de test).

En root (ou avec les droit associés (Sudo ou su selon votre distrib)

Sur le client (malorean)

apt-get update
apt-get install openssh-client

 

Sur le serveur (puppet1)

apt-get update
apt-get install openssh-server

Création et publication des clefs

Création du jeux de clef privée/publique

Sur la machine cliente (Malorean)

ssh-keygen -t dsa -b 1024

Tapez entrer pour donner le nom par défaut id_dsa au couple de clef privée/publique
Si vous saisissez une passphare sil faudra la saisir à chaque connexion, si vous désiez une connexion « automatique » ne saisissez rien (certes la sécurité est moindre), pour ma part pas de passphrase.

C’est fini

Your identification has been saved in /home/lde/.ssh/id_dsa.
Your public key has been saved in /home/lde/.ssh/id_dsa.pub.
The key fingerprint is:
f3:88:cc:dc:7f:9a:79:f4:3c:10:d9:33:3f:d7:4c:6d lde@malorean3
The key's randomart image is:
+--[ DSA 1024]----+
|                 |
|                 |
|              o .|
|            o + E|
|           S . B.|
|       + o + o .=|
|       = o .. + o|
|          . oo + |
|            =+ . |
+-----------------+

Ne me demandez pas à quoi sert ce random art image je n’en ai pas la moindre idée.

Un ls -lha ~/.ssh  pour vérifier que les fichiers sont bien la

-rw------- 1 lde lde 668 oct. 2 18:07 id_dsa
-rw-r--r-- 1 lde lde 603 oct. 2 18:07 id_dsa.pub

Publication de la clef publique

A présent il faut ajouter à un couple user/serveur  (dans notre cas lde@puppet1) la clef publique du Client (Malorean dans mon cas).
Attention Malorean et Puppet1 dans mon exemple possèdent le même nom de user lde (étant du coté client et serveur j’ai utilisé le même nom de user) , mais il pourraient évidement êtres différents.

ssh-copy-id -i ~/.ssh/id_dsa.pub lde@puppet1

Saisissez le mot de passe du serveur distant et c’est bon.

Now try logging into the machine, with "ssh 'lde@puppet1'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting

Attention : à ne pas envoyer votre clef privée (la id_dsa) qui doit rester secrète.
Pas très grave si le serveur distant est géré par vous (et encore, il faut éviter ce type de bourdes) mais dangereux si le serveur distant est géré par un tiers.
Ce derniers pourrait alors tenter de se connecter à votre serveur distant.

Pour certaines tâches délicates : fermez votre bureau, éteignez le téléphone et prenez votre temps : ça vous évitera des erreurs graves pour la sécurité de vos sysèmes.

Testons

ssh lde@puppet1

Si vous n’avez pas saisis de passphrase vous devez être connecté

Sinon entrez la passphrase demandé et vous devriez être connecté.