SSH : Gestion des clefs SSH
Par Yoann le lundi, 27 avril 2009, 22:58 - L1nuX and c0 - Lien permanent
Je ne vais pas ici vous expliquer pourquoi SSH est beaucoup plus sûr que Telnet, Rlogin, FTP, etc ..., qui transmettent les mots de passe en clair sur le réseau..
Outre le fais de pouvoir s'identifier avec un login et un mot de passe qui transitent crypté sur le réseau, SSH permet également de s'authentifier avec des clefs publiques & privées.
Ce billet est une présentation de l'utilisation des clefs publiques / privées
Introduction
SSH offre l'Authentification par clé publique/privée au lieu de simples mots de passe. Ainsi, il faut être en possession de non plus une mais de deux informations pour se connecter (avoir la clé privée & connaître le mot de passe de cette clé).
Le système de clef se decompose en deux partie, la clef privée (celle que vous devez garder secret et protégé), et la clef publique (celle que vous devez communiquer et installer sur les serveurs distants)
Génération des clefs
Génération des clefs sous Linux
Sous linux, la commande suivante permet de créer le jeu de clef publique et privée.
ssh-keygen -t dsa
Il vous sera demandé de confirmer l'emplacement où seront stocké les fichiers contenant les clefs, ainsi que la passphrase (mot de passe de la clef privée)
Generating public/private dsa key pair. Enter file in which to save the key (/home/yoann/.ssh/id_dsa): Enter passphrase (empty for no passphrase): xxxx Enter same passphrase again: xxxx Your identification has been saved in /home/yoann/.ssh/id_dsa. Your public key has been saved in /home/yoann/.ssh/id_dsa.pub. The key fingerprint is: ef:eb:ed:5a:91:fa:75:97:34:31:ed:b0:77:a7:3f:eb yoann@cube
Vous trouverez donc dans le dossier .ssh de votre home ces deux fichiers :
- id_dsa : Il contient la clef privée
- id_dsa.pub : Il contient le clef publique
Génération des clefs sous Windows
Si vous utilisez ssh depuis un poste Windows, vous connaissez surement l'utilitaire putty (si ce n'est pas le cas, ce n'est pas le but de ce billet que de présenter putty).
Nous allons utiliser ici, l'utilitaire puttygen.exe ( voir le site de putty )

Il faut sélectionner le type de clef SSH2 (DSA) et ensuite lancer la génération des clefs en cliquant sur le bouton Generate.

Pour générer les clés, n'oublier pas de bouger la souris.

Après la génération, il est possible d'entrer une passphrase (ou non, mais c'est moins secure).
Puis, il faut enregistrer les clefs :
- la clé publique en cliquant sur "Save public key" sous le nom id_dsa.pub
- la clé privée en cliquant sur "Save private key" sous le nom id_dsa.
Installation de la clef publique sur le serveur distant
Il faut maintenant envoyer au serveur votre clef publique pour qu'il puisse vous crypter des messages.
L'utilisateur distant doit avoir cette clef (c'est une ligne de caractères en code ASCII) dans son fichier de clé d'autorisation situé à « ~/.ssh/authorized_keys » sur le système distant.
Installation de la clef depuis Linux
Employez la commande ssh-copy-id.
ssh-copy-id est un script qui utilise ssh pour se connecter à une machine à distance en utilisant le mot de passe de l'utilisateur. L'authentification par mot de passe "PasswordAuthentication yes" doit donc être autorisée dans le fichier de configuration du serveur ssh. Il change également les permissions des répertoires : /.ssh/authorized_keys de l'hôte distant pour enlever l'accès en écriture du groupe (qui vous empêcheriez de vous connecter si le serveur distant ssh a "StrictModes yes" dans son fichier de configuration).
ssh-copy-id -i ~/.ssh/id_dsa.pub <username>@<ipaddress>
ou bien si le port est différent de celui par default (22)
ssh-copy-id -i ~/.ssh/id_dsa.pub "-p <num_port> <username>@<ipaddress>"
Si l'authentification par mot de passe est désactivée, alors vous aurez besoin de copier-coller votre clé suivant un autre moyen.
ssh login@serveur "echo $(cat ~/.ssh/id_dsa.pub) >> .ssh/authorized_keys"
Installation de la clef depuis Linux
Il vous faudra copier la clef dans le fichier .ssh/authorized_keys du serveur en utilisant scp.
Utilisation
Maintenant que nous avons ajouté notre clef publique sur le serveur, nous devenons un hôte de confiance.
Utilisation des clefs sous Linux
ssh <username>@<ipaddress> -p <num_port>
Vous devrez saisir votre passphrase et plus votre mot de passe vous connecter. La différence entre le mot de passe et la passphrase est que le mot de passe est situé dans /etc/passwd du système distant alors que la passphrase sert à déchiffrer votre clé privée de votre système local.
Utilisation des clefs sous Windows
Je vous invite a regarder les liens suivants (pourquoi réinventer la roue ...) :
- http://www.betaphile.net/index.php/2008/03/09/12-s-authentifier-par-cle-publique-privee-avec-putty-sous-windows
Voilà vous avez maintenant sécurisez votre connexion a l'aide d'une clef qui est elle meme protégée par un mot de passe.
Nous verrons dans un autre billet, comment sécuriser un serveur SSH.