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.

Cryptographie

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.

PuTTYGen : génération de clés SSH

PuTTYgen : génération de clés SSH

Il vous faudra bouger la souris aléatoirement pour générer la totalité de la clé.

PuTTYGen : génération d'une clé

PuTTYgen : génération d'une 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 !

Fin de la génération d'une clé avec PuTTYGen

Fin de la génération d'une clé avec PuTTYgen

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,
Edition du fichier authorized_keys sur le serveur pour y copier la clé publique

Edition du fichier authorized_keys sur le serveur pour y copier la clé publique

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é.

Connexion à un serveur avec une clé privée

Connexion à un serveur avec une clé privée

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.