Site iconSite icon Anthony Jacob

Authentification ssh à l’aide d’une paire de clés privée/publique

image de mise en avant pour l'article mise en place de l'authentification ssh par clés publique privé sur un serveur ubuntu 22.04image de mise en avant pour l'article mise en place de l'authentification ssh par clés publique privé sur un serveur ubuntu 22.04

image de mise en avant pour l'article mise en place de l'authentification ssh par clés publique privé sur un serveur ubuntu 22.04

Temps de lecture estimé: 2 minutes

Pour ajouter un peu de sécurité sur mes serveurs, j’utilise pour me connecter en ssh une paire de clés privée/publique ssh. l’idée est ici d’empêcher des personnes malveillantes de pouvoir se connecter en ssh avec un simple mot de passe.

Autoriser la connexion à l’aide d’une clé sur le serveur ssh

La première étape est de vérifier ou de modifier le fichier de configuration du serveur ssh pour autoriser l’authentification avec clés publique/privé 

PubkeyAuthentication yes

Générer une paire de clés

pour générer une paire c’est la commande ssh-keygen

ssh-keygen -t rsa-sha2-512 -b 4096 -f ~/.ssh/id_rsa2_512 -C "contact@anthony-jacob.com"

Le choix des algorithmes dépend bien sûr de tes besoins et de la capacité de tes serveurs.

( Je rajoute le commentaire -C « contact@anthony-jacob.com »  car ça me permet aussi d’utiliser ma clé comme authentification git)

Copier la clé publique sur le serveur

Il faut ensuite copier ta clé publique sur le serveur dans le fichier des clés autorisées de l’utilisateur

/home/mon_utilisateur/.ssh/authorized_keys

Pour ça soit tu édites manuellement le fichier (un peu cracra), soit il y a une commande prévue pour ça, ssh-copy

ssh-copy-id -i ~/.ssh/id_rsa2_512 user@host

Relancer le serveur et tester

Je relance le serveur ssh

sudo service ssh restart

Et depuis mon PC, je teste si la connexion fonctionne avec ma clé

ssh user@host -p port -i chemin_vers_la_clé

Et voilà! Dans mon cas tout va bien, je suis logué en ssh à mon serveur grâce à ma clé privé.

Se connecter sans spécifier sa clé

Pour aller plus loin et avoir un peu plus de praticité, je rajoute aussi quelques lignes dans mon fichier de configuration ssh du coté client (dans mon cas sur Windows C:\Users\antho\.ssh\config ou sur linux /home/antho/.ssh/config). Ça me permet de définir pour tel serveur, utilise telle clé et uniquement cette clé.

Host 192.168.1.123
    IdentityFile C:\Users\antho\.ssh\id_rsa
    IdentitiesOnly yes

Comme ça, j’ai juste à taper

ssh user@host -p port

Et ma clé est automatiquement présentée.

Si ça ne fonctionne pas comme voulu et que tu as besoin de débugger, utilise l’option -vvv pour activer le mode verbose complet et vérifier ce qu’il se passe.

ssh -vvv user@host -p port

 Surtout pour vérifier que la clé est bien utilisée 

debug1: Offering public key: .ssh\\id_rsa RSA SHA256:tq2yBd/rLXDkLZalNNS2rNLs+y5LDSGbB6sHw9ht8uc explicit
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: .ssh\\id_rsa RSA SHA256:tq2yBd/rLXDkLZalNNS2rNLs+y5LDSGbB6sHw9ht8uc explicit
debug3: sign_and_send_pubkey: RSA SHA256:tq2yBd/rLXDkLZalNNS2rNLs+y5LDSGbB6sHw9ht8uc
debug3: sign_and_send_pubkey: signing using rsa-sha2-512

Voilà! c’est tout pour la configuration de l’authentification ssh au serveur à l’aide d’une paire de clés privée/publique ssh.

Si tu souhaites sécuriser un peu plus ssh, tu peux aller voir l’article que j’ai fait ici ou mettre en place Fail2ban.

N’hésite pas à me faire un retour! En attendant, je te dis à bientôt pour de nouvelles aventures!!

Partagez l'article:
Quitter la version mobile