Générer et se connecter en SSH avec des clés SSH

malekalmorte

Création :

13 octobre 2020

Modification :

SSH (Secure Shell) est un protocole de réseau cryptographique qui permet aux administrateurs de contrôler à système à distance.
Les clés SSH offrent un moyen plus sûr de se connecter à un serveur avec SSH que d’utiliser un mot de passe seul.
Alors qu’un mot de passe peut éventuellement être cracké avec une attaque par force brute, les clés SSH sont presque impossibles à déchiffrer par la seule force brute.
En effet, avec des clés 2048 bits et l’algorithme ECDSA, les clés SSH sont le moyen le plus sûr pour vous authentifier sur un serveur SSH.

Cet article vous guide pour créer et générer la paires de clés SSH.
Vous aurez aussi la marche à suivre afin de la placer sur le serveur pour vous authentifier avec une clé SSH sans mot de passe.

Générer et se connecter en SSH avec des clés SSH

Les clés SSH : comment ça marche

La génération d’une paire de clés vous fournit deux longues chaînes de caractères: une clé publique et une clé privée.
Vous pouvez placer la clé publique sur n’importe quel serveur, puis la déverrouiller en vous y connectant avec un client qui possède déjà la clé privée.
Lorsque les deux correspondent, le système se déverrouille sans avoir besoin d’un mot de passe.
Vous pouvez augmenter encore plus la sécurité en protégeant la clé privée avec une phrase secrète.

Le protocole SSH-2 prend en charge plusieurs algorithmes de chiffrement comme RSA, DSA, ECDSA et Ed25519.
C’est donc une authentification par chiffrement asymétrique.
Ainsi, la paire de clés SSH se composent :

  • D’une clé publique : que l’on copie sur le ou les serveurs SSH
  • D’une clé privée : que l’on stocke dans le client SSH et qu’il ne faut en cas qu’à se faire pirater.
Il ne faut donc pas que votre clé privée soit volée, sinon un attaquant pourra se connecter à votre serveur SSH à votre place.

Pour rappel, voici les fichiers de configuration SSH :

  • /etc/ssh/sshd_config : Fichier de configuration du serveur OpenSSH. /etc/ssh/ssh_config : Fichier de configuration du client OpenSSH.
  • ~/.ssh/ : Dossier de configuration SSH de l’utilisateur
  • ~/.ssh/authorized_keys ou ~/.ssh/authorized_keys2 (déprécié) : Liste les clés publiques (RSA / DSA) de l’utilisateur.

Enfin voici les algorithmes et type de clé SSH à utiliser et en pas utiliser selon la longueur de la clé.

Algorithme / TypeLongueur de la cléDescription
RSA15360 bitsTrès sûr
ECDSA / Ed25519512 bitsTrès sûr
RSA3072 bitsSûr
ECDSA / Ed25519256 bitsSûr
RSA1024 bitsRelativement Sûr
ECDSA / Ed25519160 bitsRelativement Sûr
DSAA EVITER
RSA VS DSA VS ECDSA VS Ed25519

Comment générer les clés SSH

Sur Linux

Le client SSH sur Windows 10 et Linux fonctionne de la même manière.

  • Ouvrez un terminal
  • Restez connecté avec l’utilisateur avec lequel vous souhaitez vous connecter au serveur SSH. N’utilisez pas sudo, puis saisissez :
ssh-keygen -t rsa
  • Appuyez sur entrée sur le fichier à générer : ~/.ssh/id_rsa
Générer les clés SSH sur Linux
  • Ensuite saisissez une phrase de mot de passe qui sera à utiliser à chaque connexion
Générer les clés SSH sur Linux

A partir de là, votre paire de clés SSH est générée.
Il faut ensuite transférer la clé publique sur le serveur SSH, pour cela, on peut utiliser ssh-copy-id :

ssh-copy-id <utilisateur>@<host>
Générer les clés SSH sur Linux
Bravo ! vous avez réussi à générer des clés SSH sur Linux ou Windows 10.

Avec le client OpenSSH de Windows 10, Windows 11

Windows 10, 11 possède en natif un client SSH que l’on peut utiliser en invite de commandes.
Son fonctionnement est identique à celui de Linux.

Bravo ! vous avez réussi à générer des clés SSH sur Windows 10 en invite de commandes.

Sur Windows avec PuTTy

PuTTy est un client SSH populaire sur Windows.
Il gère aussi l’authentification par clés SSH.

Générer les clés SSH sur Windows avec PuTTy
  • Cliquez sur le bouton Generate afin générer les clés SSH

Notez que le menu Conversions vous permet d’importer des clés SSH déjà générées.

Générer les clés SSH sur Windows avec PuTTy
  • Bougez la souris pour terminer la génération des clés SSH
Générer les clés SSH sur Windows avec PuTTy
  • Saisissez la phrase de mot de passe dans Key passphrase et confirm passphrase
  • puis cliquez sur le bouton Save private key afin d’enregistrer le fichier de clés
Générer les clés SSH sur Windows avec PuTTy
  • Enregistrez le fichier PPK dans votre PC dans un emplacement sûr
Générer les clés SSH sur Windows avec PuTTy
Le fichier PPK est votre clé privée, elle ne doit pas être récupérée par un tiers car elle vous permet de vous connecter à votre serveur SSH.
Stockez le fichier dans un emplacement sécurisé.

Ensuite il faut installer la clé publique sur le serveur SSH :

  • Enfin connectez vous au à la machine cible
  • Éditez le fichier ~/.ssh/authorized_keys
  • Copiez/collez le contenu du champs Key / Public key for pasting info OpenSSH authorized_keys file
  • Puis enregistrez le contenu du fichier authorized_keys
Générer les clés SSH sur Windows avec PuTTy
Bravo ! vous avez réussi à générer des clés SSH sur Windows avec PuTTY.

Avec MobaXTerm

MobaXTerm est un client SSH très complet qui existe en version gratuite.
Pour une présentation complète suivez ce lien :

Il gère l’authentification par échange de clé SSH avec les algorithmes RSA, DSA, ECDSA, ed25519 et SSH1 (RSA).

  • Ouvrez MobaXTerm
  • Puis cliquez sur le menu Tools puis MobaKeyGen SSH (SH Key Generator)
  • Sur la nouvelle fenêtre, en bas choisissez le type de clé. Si vous ne savez pas, laisse sur RSA
  • Puis cliquez sur Generate
Générer des clés SSH sur MobaXTerm
  • Les clés publiques et privées se génèrent
Générer des clés SSH sur MobaXTerm
  • Dans Key passphrase, saisissez une phrase qui servira de mot de passe
Générer des clés SSH sur MobaXTerm
  • Puis cliquez save private key afin d’enregistrer le fichiers de la clé privée dans un emplacement sûr de votre PC
  • Connectez-vous au serveur distant puis éditez le fichier ~/.ssh/authorized_keys
  • Copiez/collez le contenu de clé SSH publique qui se trouve dans key. Il s’agit du contenu qui débute par ssh-rsa ou ssh-dsa, ssh-ecdsa, etc.
  • Puis enregistrez le contenu du fichier authorized_keys
Générer des clés SSH sur MobaXTerm
Bravo ! vous avez réussi à générer des clés SSH sur Windows avec MobaXterm.

Se connecter à un serveur SSH avec des clés SSH

Depuis un client Linux

  • Ouvrez un terminal
  • Utilisez la commande SSH pour vous connecter à votre serveur SSH. Utilisez la syntaxe suivante :
ssh <user>@<host>
  • Le mot de passe de verrouillage ou passphrase vous ait alors demandé, saisissez ce dernier
Se connecter à un sreveur SSH avec des clés SSH

Si vous désirez automatiser la connexion SSH via SSH-Agent cela est possible.
SSH agent est un programme qui gère les clés SSH privées pour vous et facilite l’authentification sécurisée sans avoir à entrer votre clé de phrase à chaque fois que vous accédez à un serveur distant ou effectuez une opération nécessitant votre clé SSH.
Suivez alors ce tutoriel : SSH agent : authentification par clés SSH avec ou sans keychain

Bravo ! vous avez réussi à vous connecter à un serveur SSH avec une authentification par clés SSH.

Depuis client Windows Putty

  • Ouvrez PuTTy sur PC Windows
  • Indiquez le host
  • Saisissez le nom d’une sessions dans Saved Session
  • puis cliquez sur Save
Se connecter à un sreveur SSH avec des clés SSH avec PuTTy
  • Puis à gauche, allez dans le menu Connection > SSH > Auth
  • Dans Private key file for authentification, cliquez sur Browse
  • Sélectionnez le fichier PPK généré précédemment
  • Retournez dans le menu session puis cliquez sur Save pour enregistrer les changements
Se connecter à un sreveur SSH avec des clés SSH avec PuTTy
  • Lancez la connexion SSH en cliquant sur Open
  • Saisissez le nom d’utilisateur puis la passphrase
  • La connexion SSH doit alors fonctionner via une authentification par clé SSH
Se connecter à un sreveur SSH avec des clés SSH avec PuTTy
Bravo ! vous avez réussi à vous connecter à un serveur SSH avec une authentification par clés SSH.

avec MobaXTerm

  • Dans MobaXterm, sur sessions, faites un clic droit puis New Session
  • Saisissez les informations de connexion avec l’adresse IP du serveur distant et le nom d’utilisateur
  • Enfin cochez Use private key
  • Puis cliquez sur l’icône feuille pour naviguer dans vos dossiers pour sélectionner le fichier de clé privé
Se connecter en SSH par échange de clé sur MobaXterm

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.