Comment créer une authentification SSH par clé publique à partir de Windows
Pour s’authentifier sur un serveur, on utilise essentiellement des couples d’identifiants / mots de passe. Il faut savoir qu’il existe des méthodes d’authentification fortes qui permettent de mieux sécuriser vos accès, notamment l’authentification par clé publique. On génère une paire de clés, composée :
- d’une clé publique (que tout le monde peut connaître),
- d’une clé privée (que vous devez conserver secrète, propre à vous) : cette dernière vous permettra de créer des signatures, qui pourront être vérifiées grâce à la clé publique.
Je vais traiter dans cet article de la création d’une paire de clé (publique et privée) sur Windows, et de la configuration nécessaire pour se connecter à un serveur SSH à l’aide de ces clés.
Pour commencer, il faut se procurer PuTTY, mais également PuTTYgen qui nous servira à générer la clé. Ces deux outils sont disponibles séparément, sous forme d’un zip, ou via un installeur sur la page de téléchargement de PuTTY.
PuTTYgen est un générateur de clés qui vous permettra de générer des paires de clés publiques et privées : pour le cryptage, vous avez le choix entre RSA ou DSA.
Pour générer une nouvelle clé, c’est assez simple :
- on choisit le type de clé (SSH-1 RSA, SSH-2 RSA, ou SSH-2 DSA) ainsi que sa longueur (ici 1024 bits),
- on clique sur Generate.
NB : il est intéressant de noter que les développeurs de Putty conseille fortement d’utiliser des clés RSA, DSA ayant une petite faiblesse.
Il vous faudra bouger la souris aléatoirement pour générer la totalité de la clé.
Une fois que la clé est créée, il vous reste à ajouter un commentaire ainsi qu’une phrase de passe. Le commentaire vous servira à retrouver facilement votre clé (à moins que vous ne sachiez vous souvenir du « fingerprint », l’empreinte), et la phrase de passe : celle-ci permettra de crypter la clé avant de l’écrire sur le disque.
Sans cette « passphrase« , la clé sera stockée en clair et il sera possible à tout le monde de l’utiliser : n’importe quel utilisateur y ayant accès pourra alors ouvrir une session vers un serveur sans identification supplémentaire.
Pour les cas particuliers où vous auriez besoin d’une authentification sans mot de passe (scripts lancés automatiquement, etc.), je vous conseille de créer une seconde clé qui sera spécifique à cette utilisation.
Attention : notez bien votre phrase de passe, il ne sera pas possible de la retrouver par la suite !
Une fois que le commentaire et la passphrase ont été renseignés, vous pouvez sauvegarder votre clé privée avec le bouton « Save Private Key« , et la clé publique avec « Save Public Key« . La clé privée restera sur votre poste, tandis que la clé publique est à copier sur le ou les serveur(s) où vous souhaitez vous connecter.
Pour copier cette clé publique, voici la solution la plus simple :
- se connecter en SSH au serveur souhaité,
- aller dans le répertoire .ssh et éditer le fichier authorized_keys (il se peut que le répertoire et/ou le fichier n’existe pas, il faudra alors le/les créer),
- copiez la clé que vous trouverez dans le champ « Public key for pasting into OpenSSH authorized_keys file » sur PuTTYgen et collez la telle quelle sur une ligne dans le fichier authorized_keys,
Remarques :
- sur d’anciennes version d’OpenSSH, ou sur d’autres serveurs SSH, il se peut que le nom des fichiers différent légèrement,
- les clés générées par PuTTYgen ne sont pas compatibles avec d’autres clients.
Enfin, il ne vous restera plus qu’à configurer PuTTY pour utiliser votre clé privée pour se connecter : il faut pointer le fichier contenant la clé privée dans le champ « Private key file for authentication » dans PuTTY > Connection > SSH > Auth. Lors de la connexion, votre phrase de passe (qui sert à crypter le fichier contenant votre clé privée) vous sera demandé.
L’étape suivante serait de désactiver l’authentification par mot de passe pour éviter les attaques en « brute force ».
Un autre article traite de la même tâche à partir d’une distribution Linux : authentification SSH par clés à partir de Linux.
Commentaire by RJ45HotPlugger — 14 septembre 2011 @ 9:14
Un petit ajout qui peut vous éviter de chercher comme des débiles ( c’est du vécu à mes débuts d’équivalencement de machines ssh …)
Si jamais le système continue à vous demander un mot de passe malgré le suivi de la procédure à la lettre il vous faut passer les droits du répertoire .ssh en 700, pour Redhat c’est le cas par exemple.
Après cela dépends du niveau de sécurité des distribs Linux :-))
Commentaire by Johan — 14 septembre 2011 @ 9:58
Putain ce que c’est compliqué… :p
En unix, c’est 2 lignes et 2 mots de passe et c’est réglé…
Commentaire by Romain — 14 septembre 2011 @ 10:09
@RJ45HotPlugger > Merci pour l’information complémentaire !
@Johan > J’irai pas jusqu’à dire que c’est compliqué, j’ai surtout tout détaillé.
C’est sûr, c’est plus long que sur *NIX/Linux, mais on a pas toujours le choix des infra.
Commentaire by Johan — 14 septembre 2011 @ 10:38
@Romain :
C’est pas faux, mais je voulais troller un peu… J’avais zappé on est pas vendredi !
Ping by Authentification SSH par clés à partir de Linux « wOueb by Romain DECKER / Another IT Guy Blog — 7 décembre 2011 @ 13:02
[...] déjà traité de la création d’une paire de clé SSH sur Windows, voyons maintenant comment faire sur un OS [...]
Commentaire by Inspecteur_Gadget — 12 décembre 2011 @ 10:05
Merci beaucoup!