Connexion SSH par clé privé / clé public

ou comment se connecter sans utiliser les mots de passe
lundi 19 mai 2008 par WiMpY - popularité : 100%:  - Total des visites : 2707

Il y a plusieurs possibilités pour se connecter à une machine en SSH.

La 1ère méthode consiste à entré le mots de passe de l’utilisateur pour ce connecter au système. Cette méthode est fiable si le mot de passe est vraiment très fiable ! En effet, lors d’une attaque brut de force (génération de mots de passe aléatoire afin de trouver le bon mot de passe), le système tiendra plus ou moins de temps en fonction de la complexité du mot de passe.

La 2ème méthode, à priori beaucoup plus sur consiste à générer une clé pour l’utilisateur et autoriser cette clé du coté du serveur. Cette méthode à pour avantage de pouvoir désactivé assez facilement une clé si celle si se trouve compromise (çad si elle a récupé, ou si elle n’est pas assez fiable -hein le openssl de debian !! ;)) La clé permet de garantir à un système qu’un utilisateur est bien celui qu’il prétend être. c’est à dire :" C’est bien moi et je te le prouve".

Pour que l’authentification par clé fonctionne, il y a 3 composants qui entre en jeu :
- Une clé publique : c’est elle qui sera communiqué au système hôte sur lequel on souhaite pouvoir se connecter.
- Une clé privée : elle permet de prouver son identité aux serveurs. A garder bien secret et ne jamais la communiquer !
- Une passphrase : Permet de sécuriser la clé privée avec une phrase qui fait office de "mots de passe".

1° - Création de la paire de clé publique / privé

Pour créer le couple de clé, nous allons utiliser l’outil ssh-keygen.

Il existe 2 types de clé :

RSA : Rivest Shamir Adleman

Rivest Shamir Adleman ou RSA est un algorithme asymétrique de cryptographie à clé publique, très utilisé dans le commerce électronique, et plus généralement pour échanger des données confidentielles sur Internet. Cet algorithme a été décrit en 1977 par Ron Rivest, Adi Shamir et Len Adleman, d’où le sigle RSA. RSA a été breveté [1] par le MIT en 1983 aux États-Unis d’Amérique. Le brevet a expiré le 21 septembre 2000.

Plus d’info sur wikipedia : http://fr.wikipedia.org/wiki/Rivest...

DSA : Digital Signature Algorithm

Digital Signature Algorithm, plus connu sous le sigle DSA, est un algorithme de signature numérique standardisé par le NIST aux États-Unis, du temps où le RSA était encore breveté. Cet algorithme fait partie de la spécification DSS pour Digital Signature Standard adoptée en 1993 (FIPS 186). Une révision mineure a été publiée en 1996 (FIPS 186-1) et le standard a été amélioré en 2002 dans FIPS 186-2. Il est couvert par le brevet n° 5 231 668 aux USA (26 juin 1991) attribué à David Kravitz, ancien employé de la NSA, et il peut être utilisé gratuitement.

Plus d’info sur wikipedia : http://fr.wikipedia.org/wiki/Digita...

Il existe également plusieurs longueurs de clé, on part du principe "plus elle est longue, plus elle sera dur à casser". Voici les différentes longueurs les plus courament utilisées : 1024, 2048, 4096, 8192.

La longueur 1024 est à proscrire dans le sens ou certain expert estime que d’ici quelque temps elle sera cassé. Personnelement je tape directement dans le 4096 voir 8192 (j’suis un peu parano des fois mais bon ça m’a sauvé la vie plusieurs fois :))

Donc pour créer une paire de clé de longeur 4096 utilisant l’algoritme RSA, voici :

# ssh-keygen -t rsa -b 4096 -C user@domain.tld

Le chemin ou stocker la clé vous sera demandé, puis la passphrase. Ce qui donne en utilisation réelle :

wimpy@cdulux:~/.ssh$ ssh-keygen -t rsa -b 4096 -C toto@freenux.fr
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wimpy/.ssh/id_rsa): /home/wimpy/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/wimpy/.ssh/id_rsa.
Your public key has been saved in /home/wimpy/.ssh/id_rsa.pub.
The key fingerprint is:
b8:19:df:60:f2:eb:34:df:e3:3a:93:f8:18:21:1d:6e wimpy@freenux.fr

Donc 2 fichiers seront générés suite à cette commande :

- id_rsa ou id_dsa dans le cas d’une clé RSA ou DSA qui contient la clé privée. Cette clé ne doit pas être dévoilé !!! Elle garanti votre identité
- id_rsa.pub ou id_dsa.pub dans le cas d’une clé RSA ou DSA qui contient la clé publique. Cette clé sera mise sur les serveurs dont l’accès est voulu.

2° : Configuration du serveur

ENsuite il faut s’assurer que le serveur SSH gère l’authentification par clé. Pour cela éditer le fichier /etc/ssh/sshd_config et modifier les paramètres suivant :

Décommenter ou ajouter la ligne suivante :

PubkeyAuthentication yes

Puis il suffit de relancer le serveur SSH : Pour debian-like :

/etc/init.d/ssh restart

Pour redhat-like :

service sshd reload

3° : mise en place de la clé publique sur le serveur

La aussi rien de bien compliquer ! Dans le principe, il suffit de mettre le contenu de la clé publique dans le fichier authorized_keys du compte distant sur lequel on veut se connecter.

cat ~/.ssh/id_rsa.pub | ssh utilisateur@serveur "cat - >> ~/.ssh/authorized_keys"

[Commande barbar a détaiilé :)]

4° : Ne plus avoir a retaper la passphrase à longueur de journée

Dans un 1er temps, lancer le ssh-agent afin que le deamon tourne :

wimpy@cdulux:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-FVnYX11105/agent.11105; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11106; export SSH_AGENT_PID;
echo Agent pid 11106;

Ensuite il faut ajouter votre clé privé pour faire connaitre à ssh-agent la passphrase associé à la clé :

wimpy@cdulux:~$ ssh-add .ssh/id_rsa
Enter passphrase for .ssh/id_rsa:
Identity added: .ssh/id_rsa (.ssh/id_rsa)

Et voilou, plus besoin de la retapper à chaque connection :)


Voila quelques lignes sur comment se connecter au ssh sans utiliser les mots de passe.

Pour plus de sécurité, il est intelligent de désactiver l’authentification par mots de passe.

Il est aussi préférable de désactiver l’accès au compte root par ssh...

Voila n’hésiter pas à poster les problèmes rencontrés ou des tit conseils supplémentaires ou de relever une grosse boulette dans l’article :)


Commentaires

Météo

Paris, France

Conditions météo à 11h05
par weather.com®

Soleil et nuages épars

16°C


Soleil et nuages épars
  • Vent : 11 km/h - est nord-est
  • Pression : 1010 mbar →
Prévisions >>

Prévisions du 19 mai
par weather.com®

Orages isolés

Max 19°C
Min 12°C


Orages isolés
  • Vent : 10 km/h
  • Risque de precip. : %
<< Conditions  |  Prévisions >>

Prévisions du 20 mai
par weather.com®

Orage épars

Max 22°C
Min 14°C


Orage épars
  • Vent : 11 km/h
  • Risque de precip. : 90%
<<  Prévisions  >>

Prévisions du 21 mai
par weather.com®

Averses

Max 21°C
Min 13°C


Averses
  • Vent : 19 km/h
  • Risque de precip. : 70%
<<  Prévisions  >>

Prévisions du 22 mai
par weather.com®

Soleil et nuages épars

Max 20°C
Min 13°C


Soleil et nuages épars
  • Vent : 19 km/h
  • Risque de precip. : 10%
<<  Prévisions  >>

Prévisions du 23 mai
par weather.com®

Soleil et nuages épars

Max 22°C
Min 14°C


Soleil et nuages épars
  • Vent : 10 km/h
  • Risque de precip. : 10%
<<  Prévisions  >>

Prévisions du 24 mai
par weather.com®

Orage épars

Max 24°C
Min 14°C


Orage épars
  • Vent : 11 km/h
  • Risque de precip. : 30%
<<  Prévisions  >>

Prévisions du 25 mai
par weather.com®

Soleil et nuages épars

Max 23°C
Min 14°C


Soleil et nuages épars
  • Vent : 10 km/h
  • Risque de precip. : 20%
<< Prévisions


Statistiques

Dernière mise à jour

jeudi 25 août 2011

Publication

313 Articles
Aucun album photo
Aucune brève
Aucun site
8 Auteurs

Visites

0 aujourd'hui
0 hier
101036 depuis le début
10000 visiteurs actuellement connectés