Création et utilisation de clés SSH

phil
Administrateur
Messages : 41
Inscription : 18 sept. 2011, 19:41
Contact :

Création et utilisation de clés SSH

Message par phil »

Pour se connecter en SSH à un serveur à l'aide d'une clé, il faut :
  • Avoir une clé privée sur la machine cliente
  • Que la clé publique correspondante à la clé privée soit connue par le serveur
Création des clés2>
Attention :
Pour des raisons de sécurité, la clé privée ne doit jamais transiter par des moyens non protégés. Pour cette raison, il est généralement préférable de créer un couple de clés (privée & publique) sur la machine cliente, puis d'envoyer la clé publique sur le serveur. Il est toute fois possible de générer les clés sur le serveur et de fournir la clé privée aux clients, en étant particulièrement attentif aux problématiques de sécurité de transmission des clés privées.
Information :
Le processus de création des clés est différent selon le système utilisé, mais les clés peuvent être générées sous Linux pour être utilisées sous Windows par exemple. Il est possible de les convertir pour qu'elles soient compatibles avec les logiciels utilisés.
Création des clés sur un système *nix (OS X, Linux, ...)3>
Pour créer une paire de clés (privée & publique) sur Linux ou OS X, entrer dans un terminal :

Code : Tout sélectionner

ssh-keygen
Le programme demandera alors où le couple de clés doit être créé. Par défaut, le chemin est ~/.ssh/id_rsa. Le nom du fichier correspond à celui de la clé privée, la clé publique sera stockée dans un fichier portant le même nom, avec l'extension .pub.
Le programme demandera ensuite une passphrase (mot de passe). La passphrase protège la clé privée, et sera demandée lors de son utilisation.Il est possible d'enregistrer cette passphrase pour ne pas avoir à la taper plusieurs fois dans une même session, ce point sera abordé au chapitre suivant.
Information :
Il est possible de ne pas mettre de passphrase (dans ce cas, il suffit de valider cette étape sans rien entrer), mais en cas de vol ou perte de la clé privée, elle ne présenterait plus la moindre sécurité pour se connecter au serveur. Il est donc fortement recommandé d'utiliser une passphrase.
Une fois l'étape de la passphrase validée, le programme indique que la clé privée (identity) et la clé publique ont été générées, ainsi que leurs emplacements.
L'empreinte et la représentation graphique de la clé publique sont également affichées.
Et c'est tout pour la génération des clés !
Il est possible, en jouant avec les options de ssh-keygen, de changer plusieurs paramètres, tels que le type de chiffrement ou la longueur de la clé.
FIX ME :
Ajouter un descriptif des options les plus utiles
Création des clés sur un système Windows3>
L'explication donnée ici utilise PuTTY, mais le principe est généralement le même avec les différents clients SSH existant sous Windows.
FIX ME :
Expliquer la création des clés avec PuTTY
Utilisation des clés SSH2>
Que faire du couple de clés précédemment généré ?3>
La clé publique doit maintenant être transmise au serveur, afin que ce dernier soit en mesure d'accepter les connexions demandées avec la clé privée.
Par défaut, tout du moins sur les systèmes dérivant de Debian, les clés publiques se trouvent dans ~/.ssh/authorized_keys (une clé par ligne). Il faut donc ajouter la nouvelle clé publique dans ce fichier. Il existe plusieurs solutions pour ce faire (modification du fichier via un éditeur de texte et un copier/coller, etc...).
Le plus rapide, s'il existe déjà un moyen de se connecter en ssh au serveur (avec un mot de passe ou une autre clé par exemple) est de lancer la commande suivante (sur le poste client) :

Code : Tout sélectionner

cat /local/path/to/public/key.pub | ssh user@server "cat >> /distant/path/to/authorized_keys"
Par exemple :

Code : Tout sélectionner

cat ~/.ssh/id_rsa.pub | ssh user@server "cat >> ~/.ssh/authorized_keys"
FIX ME :
Voir s'il est possible de modifier le chemin du fichier des clés publiques autorisées
Exemple de connexion avec une clé depuis un système *nix3>
Exemple de connexion avec une clé depuis un système Windows (avec PuTTY)3>
Utilisation d'un agent pour enregistrer les passphrases pour la durée d'une session3>
Sous *nix4>
Avec PuTTY4>
Pour aller plus loin2>
Désactivation de l'authentification par mot de passe3>
Répondre