WikiBoard de la plate-forme du B25 -  Besançon25-France

      WikiBoard de la plate-forme du B25 - Besançon25-France


WikiniBesancon25   ::       > CmdGenerationSshKey

DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-3-232-96-22.compute-1.amazonaws.com

Génération de la clé


?tant donné qu'un client SSH peut être un client Linux ou un client Windows, nous allons voir comment générer cette paire de clés sous Linux en ligne de commande, et sous Windows via PuttyGen?.

Générer une paire de clés sous Linux


Voyons tout d'abord comment générer une paire de clés sous Linux en ligne de commande. Pour cela, nous allons utiliser la commande ssh-keygen :


Si aucune option n'est spécifiée, une clé RSA de 2048 bits sera créée, ce qui est acceptable aujourd'hui en termes de sécurité. Si vous souhaitez spécifier une autre taille de clé, vous pouvez utiliser l'option "-b" :


Par défaut, la clé va être stockée dans le répertoire .ssh/ de l'utilisateur courant (Exemple : /root/.ssh pour l'utilisateur root).


Il va ensuite nous être proposé de saisir une passphrase, je vous recommande d'en mettre une ! Concrètement, nous avons vu qu'une clé pourra être envoyé à plusieurs serveurs pour éviter d'avoir à saisir un mot de passe, en tant que possesseur de la clé privée correspondant à la clé publique envoyée au serveur SSH sur lequel on souhaite se connecter, le serveur nous acceptera directement.

Néanmoins, si un tiers parvient à nous dérober notre clé privée, il arrivera à se connecter aux serveurs sans mot de passe. Ainsi, une passphrase permet la protection de notre clé privée via un mot de passe, ou plutôt une phrase de passe ("passphrase"). L'avantage par rapport à un mot de passe SSH est que vous n'avez qu'un mot de passe à retenir, celui de votre clé privée et pas un mot de passe par serveur SSH.

Une fois créées, vous pourrez donc voir vos clés dans le répertoire .ssh de l'utilisateur :


Pour rappel, nous nous situons toujours ici sur un Linux client, on remarque l'existence d'un autre fichier known_hosts, il s'agit ici d'un fichier permettant d'identifier un serveur. Si vous vous connectez en SSH à plusieurs serveurs depuis votre utilisateur ("root" dans mon cas), votre fichier known_host va peu à peu se remplir. Cela entraîne entre autre le fait qu'une demande validation de la clé serveur est demandée à la première connexion du serveur mais pas lors des connexions suivantes.

Mettre la clé sur le serveur


Il nous faut maintenant faire l??opération consistant à envoyer notre clé publique sur le serveur afin de pouvoir s??y authentifier, sous Linux, une commande est prévue à cet effet. (ssh-copy-id sous Linux). Il nous faut pour cela établir une connexion SSH sur le serveur par mot de passe (une dernière fois) avec la commande ssh-copy-id :


Par exemple si je souhaite, en tant que client, ajouter ma clé sur le serveur SSH 192.168.240.132 pour l'utilisateur root :


Notez que par défaut, cette commande va envoyer la clé publique .ssh/id_rsa.pub. On peut néanmoins, si l'on possède plusieurs paires de clés, spécifier la clé publique à envoyer au serveur, par exemple :


On devra donc saisir une dernière fois le mot de passe SSH de l'utilisateur visé sur le serveur SSH, puis nous aurons quelques messages de validation :


Ici, on voit donc qu'une nouvelle clé a été ajoutée au serveur. Le message qui suit nous le valide :


En effet, maintenant que notre clé publique est présente sur le serveur que nous possédons dans notre répertoire .ssh sa clé privée associée, nous allons pouvoir nous connecter au serveur juste en saisissant la commande suivante :


La passphrase de la clé publique nous sera demandée, puis on sera connecté en SSH à notre serveur.

L'avantage est le suivant : si cette même clé publique est envoyée à 30 autres serveurs, la passphrase sera la même pour toutes les connexions alors qu'il faudra retenir 30 mots de passe différents si vous utilisez la méthode d'authentification habituelle par mot de passe.
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]