Le client SSH s’utilise le plus souvent avec un couple utilisateur/mot de passe sur la machine distante. Toutefois, il est possible d’utiliser une clef RSA (authentification par clef publique) pour s’authentifier sur la machine distante. L’utilisation de cette méthode d’authentification couplée avec une passphrase permet de mettre en place un mécanisme d’authentification forte, et donc d’augmenter le niveau de sécurité.
Je vous propose donc un petit tutoriel sur la mise en place de cette méthode, avec un client Windows ou Unix/Linux.
Création d’une paire de clefs RSA
Sous Windows, avec PuTTYgen
Il faut au préalable récupérer PuTTygen. Ensuite, il suffit de l’exécuter, et de cliquer sur “Generate”. Une fois la clef générée, on met en commentaire <username>@<machinedistante>, on indique une passphrase et on sauvegarde notre couple de clef.
Sous Unix/Linux, avec ssh-keygen
Nous allons commencer par générer un couple de clefs RSA. Pour cela le plus simple et de lancer la commande ssh-keygen –t rsa –b 1024 –C <username>@<machinedistante>. Le commentaire (option –C) va permettre de distinguer une clef d’une autre facilement.
Configuration de la machine distante
Tout d’abord, il est nécessaire d’activer cette méthode au niveau du daemon SSH.
Pour cela, votre fichier /etc/ssh/sshd_config doit contenir ces deux lignes:
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Il faut ensuite raffraichir la configuration de sshd, en lançant la commande suivante: /etc/init.d/sshd reload.
Installation de votre clef publique sur la machine distante
Pour une clef générée via PuTTYgen
Il va falloir placer notre clef publique sur le serveur (via WinSCP par exemple). Ensuite, nous devons modifier notre clef, pour la rendre compatible avec OpenSSH. Pour cela, nous avons deux possibilités:
- utiliser mon petit script: putty2opens.sh
- exécuter les opérations suivantes:
- Suppression des deux premières lignes, ainsi que de la dernière
- Lancer la commande perl –pi –e ‘s/\n//g’ <fichier contenant la clef publique>
- On ajoute ssh-rsa au début du fichier, suivi d’un espace
- On ajoute notre commentaire en fin de fichier, après un espace, suivi d’un retour à la ligne
Ce qui nous donne quelque chose comme ceci:
Enfin, nous lançons la commande suivante: cat <fichier contenant la clef publique> » ~/.ssh/authorized_keys
Pour une clef générée via ssh-keygen
Nous allons indiquer sur la machine distante que notre clef est valide pour l’authentification sur le serveur. Pour cela, il nous suffit de copier notre clef publique dans le fichier ~/.ssh/authorized_keys de la machine distante, en lançant la commande suivante: cat <fichier contenant la clef publique> » ~/.ssh/authorized_keys
Configuration du client
A présent nous disposons d’un couple de clefs RSA, nous avons activé ce mode d’authentification sur la machine distante et nous avons autorisé notre couple de clef à se connecter sur la machine distante. Il ne nous reste plus qu’à configurer notre poste client.
Sous Windows, avec PuTTY:
On remplit les informations habituelles, puis on va indiquer le chemin de notre clef privée dans “Connection” -> “SSH” ->“Auth”. On peut également indiquer notre login dans “Connection” -> “Data”.
Et voila, vous n’avez plus qu’à vous connecter:
Sous Unix/Linux, avec OpenSSH
Le plus simple est de placer votre clef privée dans le fichier ~/.ssh/id_rsa.
Ainsi, il vous suffit de lancer votre commande ssh habituelle pour profiter du mécanisme:
Si vous disposez de plusieurs clef, vous pouvez alors préciser quelle clef utiliser via l’option –i.
Conclusion
Et voila, si votre clef dispose d’une passphrase, vous utilisez à présent de l’authentification forte pour accéder à votre machine distante. Si tous les utilisateurs de cette machine utilisent eux aussi l’authentification par clef, vous pouvez désactiver la méthode de connexion usuelle (par mot de passe) dans le fichier de configuration du daemon ssh.
Si vous rencontrer des problèmes ou si vous avez des commentaires à faire, n’hésitez pas à réagir ![]()






