[Tuto] Activer la connexion par clés SSH sur votre serveur ( Debian )

Testé sur Debian 10, 11 et 12
Sommaire :
1/ Génération de la paire de clés
2/ Mise en place de la clé public sur le serveur
3/ Conversion de la Clé ed25519 pour Putty
5/ Désactivation de l'identification par mot de passe

1/ Génération de la paire de clés
Une fois connecté via votre user en SSH a votre serveur, nous allons générer la paire de clés :
Code:
ssh-keygen -t ed25519
une fois la commande validé, on vous demande ou enregistrer le fichier :

Je vous conseil de ne pas modifier le chemin, pour utiliser le chemin par défaut, il suffit de valider avec Enter
Puis il vous demande si vous souhaitez rajouter une passphrase, pour ma part, je n'en rajoute pas, je valide donc la demande, et la confirmation par Enter
A partir de ce moment, ma paire de clés est crée.

Si je fait un :
Code:
ls ~/.ssh
Je peu voir un fichier id_ed25519 et un fichier id_ed25519.pub
Le fichier id_ed25519.pub est ma clé public, elle sera stocké sur le serveur.
Le fichier id_ed25519 est ma clé privé, elle sera stocké sur ma machine, et servira donc a prouver mon identité au serveur quand je souhaiterai me connecter.
2/ Mise en place de la clé public sur le serveur
Maintenant que notre paire de clé est prête, nous allons placé la clé public, dans les fichier des clés autorisé a ce connecter au serveur.
Pour cela il faut rajouter le contenu de id_ed25519.pub dans un fichier authorized_keys ( toujours dans le répertoire ~/.ssh/ )
On peux faire cela avec une seule ligne de commande :
Code:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
3/ Conversion de la Clé ed25519 pour Putty
Petite subtilité avec Putty, la clé privé ed25519 n'est pas prise en charge directement, il faut la convertir.
Pour cela :
Récupérer votre clé privé ( fichier id_ed25519 ) :
Code:
cat ~/.ssh/id_ed25519

Puis coller ceci dans un bloc-note :

Enregistrer ce bloc-note, puis ouvrer Puttygen :

Cliquer sur Load

Choisissez "All Files" afin de pouvoir voir votre fichier bloc-note précédemment créer :

Puis Importer le, a ce moment Putty vous indique que l'importation est un succes :

Maintenant, cliquer sur "Save private key" pour enregistrer votre clé privé sous un format compatible avec Putty:

Puttygen vous demande si vous êtes sur d'enregistré sans indiquer de passphrase, faites OUI :

Et enregistrer le fichier, donc mon cas, je le nomme private.ppk :

Parfait, nous avons donc maintenant, un serveur avec une clé public configuré, et une clé privé sur notre machine.
4/ Connexion par Clés SSH avec Putty
En cours .....


5/ Désactivation de l'identification par mot de passe
ATTENTION : Avant d'appliquer ceci, vous devez être bien sur que votre identification par clé fonctionne ! Si vous désactivez l'identification par mot de passe alors que votre identification par clé ne fonctionne pas, vous perdez l'acces a votre serveur !
Ce réglage ssh ce trouve dans /etc/ssh/sshd_config, nous allons donc l'éditer. Pour éditer ce fichier, vous devez etre root.
Pour passer en root :
Code:
su -
Puis on modifie le fichier de configuration :
Code:
nano /etc/ssh/sshd_config

On recherche :
Code:
#PasswordAuthentication yes

On modifie en enlevant le # de commentaire et en indiquant "no" à la place de "yes".
Code:
PasswordAuthentication no

Enfin on redémarre le service ssh :
Code:
/etc/init.d/ssh restart

Maintenant, si vous essayez de vous connecter sans échange de clé, le serveur vous renvera une erreur :

Source : andrerampersad.me
Thx @BenJ
2023-12-04 - Amélioration de rédaction du point 2/ - Validation du fonctionnement sur Debian 12
Dernière édition: