Utilisation de SSH avec clés RSA
Par SandRock le samedi 25 octobre 2008, 14:34 - Software - Lien permanent
De nos jours, je vois beaucoup de jeunes geeks (et des vieux aussi) se connecter en ssh à leur server unix avec un mot de passe faible... Avec les polonais, les marocains, les roumains qui prolifèrent sur le net à la recherche de serveurs vulnérables, il faut se protéger d'une façon plus importante. Voilà de quoi mettre en place un login via une paire de clés RSA. Et en bonus : comment configurer sshd pour refuser le login par mot de passe !
Créez vos clés RSA
Pour commencer, il faut générer une paire de clés RSA. En ligne de commande, c'est très simple :
$ ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/SandRock/.ssh/id_rsa): Enter passphrase (empty for no passphrase): xxxxxxxxxx Enter same passphrase again: xxxxxxxxxx Your identification has been saved in /home/SandRock/.ssh/id_rsa. Your public key has been saved in /home/SandRock/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:x:xx:x:x:x:x:x:x:x SandRock@Titan $ ls ~/.ssh id_rsa id_rsa.pub
Le fichier nommé id_rsa est la clé privée et le id_rsa.pub est la clé publique. Il est indispensable de garder la clé privée en sécurité (sur une partition chiffrée par exemple).
Sous Windows, un utilitaire est disponible avec PuTTY, nommé PuTTYGen. Il permet de générer les même clés (mais le format des fichiers est différent du format obtenu avec ssh_keygen). Ne pas oublier de bien choisir une clé de type RSA avec 2048 bits.

Utilisation
Maintenant que votre paire de clés est prête, il faut déclarer sur les machines distantes quelles clés sont autorisées à se connecter. Pour cela, un fichier nommé ~/.ssh/authorized_keys contiendra les clés publiques (1 par ligne) au format du fichier id_rsa.pub (ça commence par 'ssh-rsa AAAA...'). Quelques commandes pour faire ça facilement :
$ echo "ssh-rsa AAAxxxxxxx" >> ~username/.ssh/authorized_keys // ajoute une clé au fichier par copié/collé dans une console $ cat ~/.ssh/id_rsa.pub | ssh you@example.com "cat - >> ~/.ssh/authorized_keys" // ajoute une clé via ssh (mot de passe distant requis)
Désormais, la simple commande ssh me@exemple.com vous authentifiera automatiquement (la passphrase de votre clé privée sera demandée) sans mot de passe. Sous Windows avec PuTTY, il faut spécifier dans les options l'emplacement de votre clé privée dans la page Connection/SSH/Auth (il faut un fichier .pkk généré par PuTTYGen).
Interdire le login par mot de passe sur vos serveurs
Attention, procéder à une telle configuration empèchera le login par mot de passe ! Si vous perdez vos clés privées, il faudra intervenir de façon physique sur le serveur pour configurer une nouvelle clé ! Prennez donc la précaution de posséder une double paire de clés stockées dans des emplacements différents. Testez aussi le bon fonctionnement du login par clé avant de faire cette manipulation.
Ouvrez simplement le fichier /etc/ssh/sshd_config avec votre éditeur favori. Cherchez la ligne commençant par PasswordAuthentication (cette ligne peut ne pas exister ou peut être commentée).
# Change to no to disable tunnelled clear text passwords PasswordAuthentication no
Voilà qui est fait. Tout brute-force de mot de passe sera impossible.
$ ssh root@exemple.com Permission denied (publickey). Disconnected: No supported authentication methods available.
Commentaires
Bien fait, merci.
J'utilise çà dès que j'ai mon ti serveur =)
Thx pour le tuto sensei ^^
ça marche aussi avec dsa ;)