====== 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 =====
On va créer les clés publiques et privées sur le PC client (on enverra la clé plus tard sur le serveur) avec la commande suivante :
ssh-keygen -t rsa
Je vous invite très fortement à créer une passphrase pour augmenter la sécurité.
La clé privée 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ée et id_rsa.pub la clé publique. La clé publique doit être envoyée 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 @
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és 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 @ -p
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 ====
Sur le serveur, 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égâts.
Cherchez également la ligne “PasswordAuthentication yes” et mettez-la à “no” (et décommentez-la si elle est commentée avec # devant).
Ça forcera l’utilisation des clés et interdira la connexion SSH avec mot de passe.
Je vous conseille également de modifier le port d’écoute de OpenSSH (22 par défaut). Ça vous évitera de vous faire spammer ce port.
Pour ce faire, modifiez la ligne Port 22 pour mettre le port de votre choix.
Ne pas oublier d’ouvrir le port sur le pare-feu sinon votre serveur deviendra inaccessible en SSH.
Une fois ces modifications faites, redémarrer le serveur SSH avec la commande
sudo systemct restart sshd.service
Gardez votre session ssh ouverte au cas où il y aurait un pépin et essayez de vous connecter à nouveau depuis le PC client avec la commande
ssh @ -p
Vous voilà avec une connexion SSH à base de clé, ce qui est bien plus sécurisé que la connexion avec mot de passe 😉