Configuration SSH avec clé publique/privée sur Debian

Le SSH (Secure Shell) est un protocole permettant de se connecter à un serveur (généralement sous Linux/Unix) en chiffrant la connexion.
Sous Linux, l’application la plus utilisée pour mettre en place une connexion SSH est OpenSSH. Il faut donc que OpenSSH soit installer sur le PC client et sur votre serveur.

Par défaut, OpenSSH gère l’authentification via un mot de passe. On va voir comment configurer OpenSSH avec un couple clé privée/publique au lieu d’utiliser un mot de passe, ce qui sera un peu plus sûr.

Création des clés

Avant toute chose, je vous conseille de modifier le port d’écoute de OpenSSH (22 par défaut). Ca vous évitera de vous faire spammer ce port.

Pour ce faire il faut ouvrir le fichier de configuration /etc/ssh/sshd_config et modifier la ligne Port 22 pour mettre le port de votre choix.
Ne pas oublier d’ouvrir le port sur le parefeu sinon votre serveur deviendra inaccessible en SSH.
Une fois la modif effectuée, redémarrer le service ssh avec la commande sudo systemctl restart ssh.service

Maintenant que c’est fait, revenons à nos clés. On va créer les clé publiques et privés sur le PC client (on enverra la clé plus tard sur le serveur).

Tapez la commande
ssh-keygen -t rsa

Je vous invite très fortement à créer une passphrase pour augmenter la sécurité.

La clé privé et la clé publique ont été créées dans le dossier ~/.ssh (si vous n’avez pas modifié le répertoire de destination).
Le fichier id_rsa est votre clé privé et id_rsa.pub la clé publique. La clé publique doit être envoyé sur votre serveur et la clé privée doit rester sur le pc client.

Pour envoyer la clé publique au serveur on va utiliser la commande ssh-copy-id comme suit
ssh-copy-id -i ~/.ssh/id_rsa.pub -p <num_port> <username>@<ipaddress>

ssh-copy-id va se connecter à votre serveur en ssh et copier la clé publique dans le fichier authorized_keys qui se trouve dans le dossier .ssh de l’utilisateur avec lequel vous vous connectez en ssh.
Ce fichier liste les clé autorisées à se connecter au serveur.

Maintenant que nos clés sont créées, on va tester pour voir si ça marche.

Tapez la commande
ssh <username>@<ipaddress> -p <num_port>

Il vous sera demandé de rentrer la passphrase de votre clé. Une fois rentrée, vous devriez pouvoir accéder à votre serveur.

Maintenant que ça fonctionne, on va modifier un peu la configuration du serveur SSH.

Désactiver l’authentification par mot de passe

Ouvrez de nouveau le fichier /etc/ssh/sshd_config.
Trouvez la ligne “PermitRootLogin yes” et remplacez le “yes” par “no”.

Avec cette modification, le serveur refusera toute connexion en ssh avec l’utilisateur root. Si jamais votre connexion ssh se fait pirater (même si ça a peu de chance d’arriver), ça limitera les dégats.

Cherchez également la ligne “PasswordAuthentication yes” et mettez la à “no” (et décommentez-la si elle est commentée avec # devant).

Ca forcera l’utilisation des clés et interdira la connexion ssh avec mot de passe.

Une fois ces modification faites, redémarrer le serveur ssh avec la commande
service ssh restart

Gardez votre session ssh ouverte au cas où il y aurait un pépin et essayez de vous connecter à nouveau avec la commande
ssh <username>@<ipaddress> -p <num_port>

Vous voilà avec une connexion ssh à base de clé, ce qui est bien plus sécurisé que la connexion avec mot de passe 😉

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.