Convertir ses clés SSH de PuTTY pour Linux

closeCet article a été publié il y a 10 ans 1 mois 6 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Dans mon processus de migration sous Linux, je me suis posé la question de la réutilisation de mes clés SSH, créées avec PuTTY, avec le client OpenSSH intégré dans la plupart des distributions. Alors une fois n’est pas coutume, un peu de vraies geekeries avec un petit tutoriel de conversion des clés, et démonstration de leur utilisation.

Quand vous utilisez PuTTY sous Windows, les fichiers de clés privées utilisées sont au format ppk (qui doit vouloir dire PuTTY Private Key), qui n’est utilisable que par lui (enfin, pas que). Fort heureusement, il n’y a pas besoin de recréer un jeu de clé quand vous changez d’environnement et surtout de logiciel. Pour ce faire, c’est le petit utilitaire PuTTYgen qui va nous servir.

PuTTYgen, générateur et convertisseur de clés depuis 1999

Ce petit programme devrait déjà être installé, puisqu’il devrait vous avoir servi pour créer votre accès. Si on vous a juste fourni la clé et que PuTTYgen n’est pas présent sur votre machine, vous pouvez le récupérer sur le site du développeur du programme.

ssh-interface

Il faut cliquer sur le bouton « Load » entouré sur la capture ci-dessus, et sélectionner votre fichier .ppk préféré. Le résultat devrait ressembler à ça :

ssh-loaded

Ensuite, il faut cliquer sur « Conversions » dans le menu, et sur « Export OpenSSH key », puis choisir un nom de fichier, n’importe lequel. Il faudra ensuite le poser dans un dossier utilisable sous Linux.

UPDATE : Sur le blog Sam et Max, Sam nous apprend que PuTTY existe aussi sous Linux. Deux possibilités : soit vous l’utilisez, mais c’est pas super intégré à votre environnement de bureau, soit vous utilisez leur méthode pour installer puttygen et convertir la clé si vous n’avez pas de Windows sous la main. La méthode est donnée pour Ubuntu, mais sous Manjaro/Arch, il est inclus dans le paquet putty. Un simple pacman -S putty suffira à l’installer. Les commandes seront ensuite les mêmes.

Le client OpenSSH, la vraie geekerie commence

Bien, nous voilà sous Linux, notre fichier se trouve dans notre dossier utilisateur (techniquement vous pouvez le ranger où vous voulez), et nous cherchons à accéder à notre machine distante.

Remarquez bien les droits d’accès sur le fichier (seboss666.ssh ici). Le fichier ne doit pouvoir être lisible que par son propriétaire, sinon ssh refusera de l’utiliser, car trop sensible. Pour ça, un simple chmod 0600 seboss666.ssh suffit. Sinon, pour accéder à votre machine, une seule ligne de commande suffit, et vous vous retrouvez sur votre serveur distant :

Le prompt (seb@heberg ici) doit vous renseigner du succès de la connexion.

Options supplémentaires et automatisation

C’est la version la plus simple. Je vais vous présenter une version un peu plus complète, qui permet plusieurs choses :

Décortiquons cette commande relativement simple (si, si, vous allez voir) :

  • ssh est évidemment le nom du programme
  • seb@distant.server désigne l’utilisateur et l’adresse du serveur
  • -i /root/seboss666.sh permet de sélectionner l’identité, la clé privée donc
  • -p 22 désigne le port sur lequel se connecter; souvent, par « sécurité », le port par défaut du serveur SSH est changé pour éviter des attaques simples dessus, il faut donc le spécifier à la commande
  • -D 9999 permet de créer un tunnel et assigne un port local par lequel vous pouvez faire passer des applications par ce tunnel; pratique pour passer un proxy dans une entreprise où les VPN sont proscrits

C’est bien, c’est mieux, mais ça fait toujours très long à taper tous ces caractères. Deux solutions s’offrent à vous : créer un script shell dans /usr/bin, ou bien créer un alias plus court dans le fichier ~/.bashrc, qui charge les paramètres lors de la connexion. Je préfère cette solution, qui ne nécessite pas l’accès à root sur la machine pour créer le script.

On va la jouer court, comme d’habitude, et une seule commande va nous servir à ajouter l’alias au fichier :

 Le double chevron servira à ajouter l’alias à la fin du fichier, et si celui-ci n’existe pas, il le créera (peu probable, mais sait-on jamais).

Conclusion

J’aurais tant à dire sur les possibilités qu’offre OpenSSH ou les possibilités de personnalisation du shell sous Linux, il en faudrait un bouquin. Les réglages sont nombreux, aussi bien pour le client que pour le serveur. Pour ce dernier, on pourra lire par exemple ces bonnes pratiques pour une sécurisation.

1 Commentaire
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
sets
sets
03/03/2018 20:11

Petit tip si putty-tools est installé, on peut passer en commande directement: puttygen /XXX/Key.ppk -O private-openssh -o id_dsa 🙂