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!!