Comment créer des clés SSH avec PuTTY pour se connecter à un VPS
Avantages des clés SSH publiques et privées
Si votre VPS sans interface graphique ou distant est visible sur Internet, vous devriez utiliser l'authentification par clé publique au lieu des mots de passe, si possible. Cela est dû au fait que les clés SSH offrent un moyen plus sécurisé de se connecter par rapport à l'utilisation d'un mot de passe seul. Alors qu'un mot de passe peut finalement être déchiffré par une attaque par force brute, les clés SSH sont presque impossibles à déchiffrer par force brute seule. Avec l'authentification par clé publique, chaque ordinateur possède (i) une « clé » publique et (ii) une « clé » privée (deux algorithmes liés mathématiquement qui sont pratiquement impossibles à craquer).
Aujourd'hui, OpenSSH est l'implémentation SSH par défaut sur les systèmes de type Unix tels que Linux et OS X. L'authentification par clé est la plus sécurisée parmi plusieurs modes d'authentification utilisables avec OpenSSH, tels que les mots de passe simples et les billets Kerberos. D'autres méthodes d'authentification ne sont utilisées que dans des situations très spécifiques. SSH peut utiliser des clés "RSA" (Rivest-Shamir-Adleman) ou "DSA" ("Digital Signature Algorithm"). Ces deux méthodes étaient considérées comme des algorithmes de pointe lors de l'invention de SSH, mais DSA a été perçu comme moins sécurisé ces dernières années. RSA est le seul choix recommandé pour les nouvelles clés, donc ce tutoriel utilise "clé RSA" et "clé SSH" de manière interchangeable.
Lorsque vous vous connectez à votre VPS DigitalOcean, le serveur SSH utilise la clé publique pour "verrouiller" les messages d'une manière qui ne peut être "déverrouillée" que par votre clé privée. Cela signifie que même l'attaquant le plus ingénieux ne peut pas espionner ou interférer avec votre session. Comme mesure de sécurité supplémentaire, certains utilisateurs et la plupart des programmes SSH stockent la clé privée dans un format protégé par une phrase de passe, pour fournir une période de temps pendant laquelle vous pouvez désactiver votre clé publique compromise, si votre ordinateur est volé ou piraté. Pour ces raisons, l'authentification par clé publique est une bien meilleure solution que les mots de passe pour la plupart des gens. En fait, en ne utilisant pas de phrase de passe sur votre clé privée, vous aurez la possibilité d'automatiser certaines parties de votre gestion de configuration avec des connexions automatiques et sécurisées, telles que des sauvegardes incrémentielles hors site, gérer vos actifs DigitalOcean via l'API DigitalOcean, et plus encore.
Connexions SSH basées sur des clés
Vous pouvez enregistrer la même clé publique sur autant de serveurs cloud que vous le souhaitez, tandis que votre clé privée est enregistrée sur un client à partir duquel vous vous connectez au serveur. Ensuite, vous pouvez désactiver la procédure normale de connexion par nom d'utilisateur/mot de passe, ce qui signifie que seules les personnes disposant d'une paire de clés privée/publique valide peuvent se connecter ; rendant votre système plus sûr, car il sera imperméable aux attaques par force brute.
Automatiser la création de nouveaux droplets
Un autre but utile que les clés SSH peuvent servir est dans la création de droplet DigitalOcean. Comme vous le savez, lorsque vous créez un droplet, vous devez attendre un e-mail avec votre mot de passe. Bien que cet e-mail soit très pratique, il existe un moyen plus sûr (et plus rapide) d'accéder à votre nouveau serveur cloud sans avoir besoin d'un e-mail. Cela peut être fait en enregistrant votre clé publique dans le panneau de contrôle DigitalOcean. Pour ce faire :
- Tout d'abord, complétez la section de ce tutoriel intitulée Génération de clés compatibles OpenSSH pour une utilisation avec PuTTY.
- Ensuite, passez à l'Étape Trois de Comment utiliser des clés SSH avec les Droplets DigitalOcean.
Conditions préalables
Ce didacticiel suppose que vous êtes familier avec le guide de DigitalOcean sur comment se connecter à votre Droplet avec PuTTY (pour les utilisateurs de Windows).
Générateur de clés PuTTY (a.k.a. PuTTYgen)
Bien que PuTTY soit un programme client pour SSH (en plus de Telnet et Rlogin), il n'est pas un port ou basé de quelque manière que ce soit sur OpenSSH. Par conséquent, PuTTY n'a pas de support natif pour la lecture des fichiers de clé privée SSH-2 d'OpenSSH. Cependant, PuTTY dispose d'un compagnon nommé PuTTYgen (un utilitaire de génération de clés RSA et DSA), qui peut convertir les fichiers de clé privée OpenSSH au format de PuTTY ; vous permettant ainsi de vous connecter à votre serveur cloud depuis une machine Windows, avec la sécurité supplémentaire que fournissent les clés SSH.
PuTTYgen est un utilitaire open-source (gratuit) et peut être téléchargé depuis le site web de son mainteneur. PuTTYgen est ce que vous utiliserez pour générer vos clés SSH à utiliser dans PuTTY. Pour commencer, tout ce que vous avez à faire est de télécharger les fichiers exécutables (.exe) et de les enregistrer sur l'ordinateur que vous utiliserez pour vous connecter à votre VPS, par exemple sur le bureau. Vous n'aurez pas besoin de "installer" PuTTYgen, car c'est une application autonome.
Génération de clés compatibles OpenSSH pour une utilisation avec PuTTY
Pour générer un ensemble de clés RSA avec PuTTYgen :
- Lancez l'utilitaire PuTTYgen en double-cliquant sur son fichier .exe.
- Pour Type de clé à générer, sélectionnez RSA ;
- Dans le champ Nombre de bits dans une clé générée, spécifiez soit 2048 soit 4096 (augmenter le nombre de bits rend plus difficile le craquage de la clé par des méthodes de brute force);
- Cliquez sur le bouton Générer;
- Déplacez le pointeur de votre souris dans la zone vide de la section Clé, en dessous de la barre de progression (pour générer un peu de hasard) jusqu'à ce que la barre de progression soit pleine;
- Une paire de clés privée/publique a maintenant été générée ;
- Dans le champ Commentaire clé, saisissez tout commentaire que vous souhaitez, pour vous aider à identifier cette paire de clés, plus tard (par exemple votre adresse e-mail ; domicile ; bureau ; etc.) -- le commentaire clé est particulièrement utile dans le cas où vous finissez par créer plus d'une paire de clés ;
- Facultatif : Tapez une phrase de passe dans le champ Phrase de passe clé et retapez la même phrase dans le champ Confirmer la phrase de passe (si vous souhaitez utiliser vos clés pour des processus automatisés, cependant, vous ne devriez pas créer de phrase de passe);
- Cliquez sur le bouton Enregistrer la clé publique et choisissez le nom de fichier que vous souhaitez (certains utilisateurs créent un dossier sur leur ordinateur nommé mes_clés);
- Cliquez sur le bouton Enregistrer la clé privée et choisissez le nom de fichier que vous souhaitez (vous pouvez l'enregistrer au même endroit que la clé publique, mais cela devrait être un endroit auquel seule vous pouvez accéder et que vous ne perdrez PAS ! Si vous perdez vos clés et que vous avez désactivé les connexions par nom d'utilisateur/mot de passe, vous ne pourrez plus vous connecter !) ;
- Cliquez avec le bouton droit dans le champ de texte intitulé Clé publique à coller dans le fichier authorized_keys de OpenSSH et choisissez Sélectionner tout;
- Cliquez à nouveau avec le bouton droit de la souris dans le même champ de texte et choisissez Copier.
REMARQUE : PuTTY et OpenSSH utilisent des formats différents pour les clés publiques SSH. Si la clé SSH que vous avez copiée commence par "---- BEGIN SSH2 PUBLIC KEY ...", elle est au mauvais format. Assurez-vous de suivre les instructions attentivement. Votre clé doit commencer par "ssh-rsa AAAA ...."
Sauvegardez la clé publique sur le serveur
Maintenant, vous devez coller la clé publique copiée dans le fichier ~/.ssh/authorized_keys sur votre serveur.
- Connectez-vous à votre serveur de destination ; voir Comment se connecter à votre Droplet avec PuTTY (pour les utilisateurs de Windows)
- Si votre dossier SSH n'existe pas encore, créez-le manuellement :
- Collez la clé publique SSH dans votre fichier ~/.ssh/authorized_keys (voir Installation et utilisation de l'éditeur de texte Vim sur un serveur Cloud):
- Appuyez sur la touche
ide votre clavier et faites un clic droit avec votre souris pour coller. - Pour enregistrer, appuyez sur les touches suivantes de votre clavier (dans cet ordre) :
Esc,:,w,q,Entrée.
mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keyssudo vim ~/.ssh/authorized_keysCréer un profil PuTTY pour enregistrer les paramètres de votre serveur
Dans PuTTY, vous pouvez créer (et sauvegarder) des profils pour les connexions à vos différents serveurs SSH, afin de ne pas avoir à retenir et à ressaisir continuellement des informations redondantes.
- Lancez PuTTY en double-cliquant sur son fichier exécutable;
- La fenêtre initiale de PuTTY est la catégorie Session (naviguez dans les différentes catégories de PuTTY, le long du côté gauche de la fenêtre) ;
- Dans le champ Nom d'hôte, entrez l'adresse IP de votre VPS ou son nom de domaine complètement qualifié (FQDN) ; voir Comment configurer un nom d'hôte avec DigitalOcean
- Entrez le numéro de port dans le champ Port (pour plus de sécurité, envisagez de changer le port SSH de votre serveur pour un port non standard. Voir l'étape cinq de Configuration initiale du serveur avec Ubuntu 12.04.
- Sélectionnez SSH sous Protocole ;
- Sur le côté gauche de la fenêtre, sélectionnez la sous-catégorie Données, sous Connexion;
- Spécifiez le nom d'utilisateur que vous prévoyez d'utiliser lors de la connexion au serveur SSH et dont vous enregistrez le profil, dans le champ Nom d'utilisateur de connexion automatique ;
- Développez la sous-catégorie SSH, sous Connexion;
- Mettez en surbrillance la sous-catégorie Auth et cliquez sur le bouton Parcourir, sur le côté droit de la fenêtre PuTTY ;
- Parcourez votre système de fichiers et sélectionnez votre clé privée que vous avez créée précédemment ;
- Retournez à la catégorie Session et saisissez un nom pour ce profil dans le champ Séances enregistrées, par exemple user@123.456.78.9 ou user@host.votredomaine.tld;
- Cliquez sur le bouton Enregistrer pour la zone Charger, Enregistrer ou Supprimer une session enregistrée.
Vous pouvez maintenant vous connecter à user@1.2.3.4 et vous ne serez pas invité à entrer un mot de passe. Cependant, si vous avez défini une phrase de passe sur votre clé publique, vous devez entrer la phrase de passe à ce moment-là (et chaque fois que vous vous connecterez à l'avenir).
Désactiver les connexions par nom d'utilisateur/mot de passe
Une fois que vous avez vérifié que vos connexions basées sur une clé fonctionnent, vous pouvez choisir de désactiver les connexions par nom d'utilisateur/mot de passe pour améliorer la sécurité. Pour ce faire, vous devez modifier le fichier de configuration de votre serveur SSH. Sur les systèmes Debian/Ubuntu, ce fichier se trouve à /etc/ssh/sshd_config.
sudo vim /etc/ssh/sshd_configAppuyez sur la touche i de votre clavier et modifiez les lignes, comme indiqué ci-dessous :
[...]
PasswordAuthentication no
[...]
UsePAM no
[...]Pour enregistrer, appuyez sur les touches suivantes de votre clavier (dans cet ordre) : Esc, :, w, q, Enter. Maintenant, rechargez la configuration du serveur SSH :
sudo reload sshRessources supplémentaires
- Comment configurer des clés SSH | DigitalOcean
- Comment protéger SSH avec fail2ban sur Ubuntu 12.04 | DigitalOcean
- Comment protéger SSH avec une authentification à deux facteurs | DigitalOcean
- Comment copier des fichiers avec Rsync sur SSH | DigitalOcean
- Cryptographie à clé publique | Wikipedia;
- FAQ de PuTTY | Simon Tatham.
Comme toujours, si vous avez besoin d'aide avec les étapes de ce guide, n'hésitez pas à vous tourner vers la communauté DigitalOcean pour obtenir de l'aide en posant vos question(s) ci-dessous.
