SSH, ou Secure SHell, est un protocole utilisé pour administrer les serveurs à distant.
Dans ce guide, nous allons nous concentrer sur la configuration des clés SSH pour un serveur Rocky Linux 9. Les clés SSH constituent une méthode simple et sécurisée pour se connecter à votre serveur sans avoir besoin du mot de passe.
Nous allons également voir comment désactiver l’accés au serveurs distants avec mot de passe.
L’un des cas courant qui exige d’utiliser les clés SSH est Ansible. En utilisant les Clés SSH vous pouvez appliquer les playbook sans avoir besoin de taper le mot de passe à chaque fois.
Etape 1 : Création d’une paire de clés RSA
Tout d’abord je souhaite me connecter à mon serveur distant « node1 » en SSH :
[root@master ~]# ssh node1
root@node1's password:
Comme vous pouvez le constater, un mot de passe est demandé. par contre je souhaite me connecter sans avoir besoin de le taper.
Pour commencer, il faut créer une paire de clés sur la machine du client (généralement votre ordinateur local depuis lequel vous souhaitez administrer vos serveur) :
[root@master ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:sVfyvHvQm9C2P3S0864Wgoqe8e5NqYDOVQ9cqaw9ojQ root@master
The key's randomart image is:
+---[RSA 3072]----+
| |
| . |
| . + . |
| o = = .|
| S ..oo ..|
| . + +..+.=+.|
| E *.o.+ .=.=+|
| + +.*.= .*..|
| +.oo= . .o.++|
+----[SHA256]-----+
Par défaut, ssh-keygen crée une paire de clés RSA de 2048 bits, ce qui est assez sécurisé. Il suffit de cliquer sur "Entrer"
pour toutes les question ( pas la peine de créer une passphare)
Etape 2: Copier la clé public SSH vers vos serveurs distants
La méthode la plus pratique pour copier votre clé vers vos serveurs distants et d’utiliser la commande ssh-copy-id
.
# ssh-copy-id username@remote_host
Voici la commande dans mons cas :
[root@master ~]# ssh-copy-id user1@node1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user1@node1's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user1@node1'"
and check to make sure that only the key(s) you wanted were added.
Vous serez invité à taper le mot de passe de l’utilisateur ( dans mon cas user1) et ça sera pour la dernière fois. Bien évidemment le compte doit être déjà créé sur vos serveurs distants pour que vous puissiez vous connecter.
En fin, un petit test pour s’assurer que la clé pubic a été bien copiée :
[root@master ~]# ssh user1@node1
Last login: Mon Sep 9 08:51:42 2024 from 192.168.139.189
[user1@node1 ~]$
Egalement faites la même chose pour tous vos serveur distants.
Etape 3: Désactiver l’authentification avec mot de passe
Bien que nous avons configuré l’accès ssh sans mot de passe, l’authentification est toujours activé, Ainssi votre serveur est toujours exposé aux attaques par force brute.
Ainsi il faut le désactiver. La méthode est très simple, il suffit d’éditer le fichier /etc/ssh/sshd_config
:
# vi /etc/ssh/sshd_config
Recherchez une directive appelée PasswordAuthentication
. Décommenter la ligne, mettez la valeur à no
:
...
PasswordAuthentication no
...
Une fois terminé, redémarrer le service SSH avec la commande ci-dessous :
# systemctl restart sshd
Egalement faites la même chose pour tous vos serveur distants.
Finalement, vous ne pouvez accéder à vos serveurs que via vos clé SSH et L’authentification par mot de passe a été désactivée avec succès.
Installer et configurer Ansible sur Rocky Linux 9
Le montage sous linux
Comment Installer LAMP sur Rocky Linux 9.
Empêcher les utilisateurs sudoers d’exécuter des cmds sudo
Fail2Ban : How to protect Linux services