Introduction
SSH, ou shell sécurisé, est un protocole chiffré utilisé pour administrer et communiquer avec des serveurs. Lorsque vous travaillez avec un serveur Rocky Linux, il est probable que vous passiez la plupart de votre temps dans une session de terminal connectée à votre serveur via SSH.
Dans ce guide, nous nous concentrerons sur la configuration des clés SSH pour un serveur Rocky Linux 9. Les clés SSH fournissent une méthode simple et sécurisée pour vous connecter à votre serveur et sont recommandées pour tous les utilisateurs.
Étape 1 — Création de la paire de clés RSA
La première étape consiste à créer une paire de clés sur la machine cliente (généralement votre ordinateur local) :
- ssh-keygen
Par défaut, ssh-keygen
créera une paire de clés RSA de 2048 bits, ce qui est suffisamment sécurisé pour la plupart des cas d’utilisation (vous pouvez éventuellement utiliser le drapeau -b 4096
pour créer une clé plus grande de 4096 bits).
Après avoir saisi la commande, vous devriez voir le message suivant :
OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Appuyez sur ENTRÉE
pour enregistrer la paire de clés dans le sous-répertoire .ssh/
de votre répertoire personnel, ou spécifiez un chemin alternatif.
Si vous aviez déjà généré une paire de clés SSH, vous pourriez voir le message suivant :
Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Si vous choisissez d’écraser la clé sur le disque, vous ne pourrez plus vous authentifier en utilisant l’ancienne clé. Soyez très prudent lorsque vous sélectionnez oui, car il s’agit d’un processus destructeur qui ne peut pas être inversé.
Vous devriez alors voir l’invite suivante:
OutputEnter passphrase (empty for no passphrase):
Vous pouvez ensuite entrer facultativement une phrase secrète sécurisée, ce qui est fortement recommandé. Une phrase secrète ajoute une couche de sécurité supplémentaire à votre clé pour empêcher les utilisateurs non autorisés de se connecter.
Vous devriez alors voir la sortie suivante:
OutputYour identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
Vous disposez maintenant d’une clé publique et privée que vous pouvez utiliser pour vous authentifier. La prochaine étape consiste à transférer la clé publique sur votre serveur afin de pouvoir vous connecter en utilisant l’authentification basée sur les clés SSH.
Étape 2 – Copie de la clé publique vers votre serveur Rocky Linux
La manière la plus rapide de copier votre clé publique sur l’hôte Rocky Linux est d’utiliser un utilitaire appelé ssh-copy-id
. Cette méthode est fortement recommandée si elle est disponible. Si vous n’avez pas ssh-copy-id
disponible sur votre machine cliente, vous pouvez utiliser l’une des deux méthodes alternatives qui suivent (copie via SSH basé sur un mot de passe ou copie manuelle de la clé).
Copier votre clé publique à l’aide de ssh-copy-id
Le outil ssh-copy-id
est inclus par défaut dans de nombreux systèmes d’exploitation, vous pouvez donc l’avoir disponible sur votre système local. Pour que cette méthode fonctionne, vous devez déjà avoir un accès SSH basé sur un mot de passe à votre serveur.
Pour utiliser l’utilitaire, vous devez simplement spécifier l’hôte distant auquel vous souhaitez vous connecter et le compte utilisateur auquel vous avez un accès SSH basé sur un mot de passe. Il s’agit du compte vers lequel votre clé SSH publique sera copiée:
- ssh-copy-id username@remote_host
Vous pouvez voir le message suivant:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Cela signifie que votre ordinateur local ne reconnaît pas l’hôte distant. Cela se produira la première fois que vous vous connecterez à un nouvel hôte. Tapez yes
et appuyez sur ENTER
pour continuer.
Ensuite, l’utilitaire analysera votre compte local à la recherche de la clé id_rsa.pub
que nous avons créée précédemment. Lorsqu’il trouve la clé, il vous demandera le mot de passe du compte utilisateur distant:
Output/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
username@203.0.113.1's password:
Saisissez le mot de passe (votre saisie ne sera pas affichée à des fins de sécurité) et appuyez sur ENTER
. L’utilitaire se connectera au compte sur l’hôte distant en utilisant le mot de passe que vous avez fourni. Il copiera ensuite le contenu de votre clé ~/.ssh/id_rsa.pub
dans le fichier ~/.ssh/authorized_keys
du compte distant.
Vous devriez voir la sortie suivante:
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
À ce stade, votre clé id_rsa.pub
a été téléchargée sur le compte distant. Vous pouvez continuer avec Étape 3.
Copier la clé publique en utilisant SSH
Si vous n’avez pas ssh-copy-id
disponible, mais que vous avez un accès SSH basé sur un mot de passe à un compte sur votre serveur, vous pouvez télécharger vos clés en utilisant une méthode SSH plus conventionnelle.
Vous pouvez le faire en utilisant la commande cat
pour lire le contenu de la clé publique SSH sur votre ordinateur local et en le faisant passer par une connexion SSH vers le serveur distant.
De l’autre côté, nous pouvons nous assurer que le répertoire ~/.ssh
existe et a les permissions correctes sous le compte que nous utilisons.
Nous pouvons ensuite afficher le contenu que nous avons fait passer dans un fichier appelé authorized_keys
dans ce répertoire. Nous utiliserons le symbole de redirection >>
pour ajouter le contenu sans l’écraser. Cela nous permettra d’ajouter des clés sans détruire les clés précédemment ajoutées.
La commande complète ressemble à ceci:
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Vous pouvez voir le message suivant:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Cela signifie que votre ordinateur local ne reconnaît pas l’hôte distant. Cela se produira la première fois que vous vous connectez à un nouvel hôte. Tapez yes
et appuyez sur ENTRÉE
pour continuer.
Ensuite, vous devriez être invité à saisir le mot de passe du compte utilisateur distant :
Outputusername@203.0.113.1's password:
Après avoir saisi votre mot de passe, le contenu de votre clé id_rsa.pub
sera copié à la fin du fichier authorized_keys
du compte utilisateur distant. Poursuivez avec Étape 3 si cela a réussi.
Copie Manuelle de la Clé Publique
Si vous n’avez pas d’accès SSH basé sur un mot de passe disponible sur votre serveur, vous devrez compléter le processus ci-dessus manuellement.
Nous allons ajouter manuellement le contenu de votre fichier id_rsa.pub
au fichier ~/.ssh/authorized_keys
sur votre machine distante.
Pour afficher le contenu de votre clé id_rsa.pub
, saisissez ceci sur votre ordinateur local :
- cat ~/.ssh/id_rsa.pub
Vous verrez le contenu de la clé, qui devrait ressembler à ceci :
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host
Connectez-vous à votre hôte distant en utilisant la méthode disponible.
Une fois que vous avez accès à votre compte sur le serveur distant, assurez-vous que le répertoire ~/.ssh
existe. Cette commande créera le répertoire si nécessaire, ou ne fera rien s’il existe déjà :
- mkdir -p ~/.ssh
Maintenant, vous pouvez créer ou modifier le fichier authorized_keys
dans ce répertoire. Vous pouvez ajouter le contenu de votre fichier id_rsa.pub
à la fin du fichier authorized_keys
, en le créant si nécessaire, en utilisant cette commande :
- echo public_key_string >> ~/.ssh/authorized_keys
Dans la commande ci-dessus, remplacez le public_key_string
par la sortie de la commande cat ~/.ssh/id_rsa.pub
que vous avez exécutée sur votre système local. Il devrait commencer par ssh-rsa AAAA...
.
Enfin, nous veillerons à ce que le répertoire ~/.ssh
et le fichier authorized_keys
aient les autorisations appropriées définies :
- chmod -R go= ~/.ssh
Cela supprime de manière récursive toutes les autorisations « groupe » et « autres » pour le répertoire ~/.ssh/
.
Si vous utilisez le compte root
pour configurer des clés pour un compte utilisateur, il est également important que le répertoire ~/.ssh
appartienne à l’utilisateur et non à root
:
- chown -R sammy:sammy ~/.ssh
Dans ce tutoriel, notre utilisateur s’appelle sammy mais vous devriez substituer le nom d’utilisateur approprié dans la commande ci-dessus.
Nous pouvons maintenant tenter l’authentification basée sur les clés avec notre serveur Rocky Linux.
Étape 3 — Connexion à votre serveur Rocky Linux en utilisant des clés SSH
Si vous avez réussi à compléter l’une des procédures ci-dessus, vous devriez maintenant être capable de vous connecter à l’hôte distant sans le mot de passe du compte distant.
Le processus initial est le même qu’avec l’authentification basée sur mot de passe :
- ssh username@remote_host
Si c’est la première fois que vous vous connectez à cet hôte (si vous avez utilisé la dernière méthode ci-dessus), vous pourriez voir quelque chose comme ceci :
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Cela signifie que votre ordinateur local ne reconnaît pas l’hôte distant. Tapez oui
puis appuyez sur ENTRÉE
pour continuer.
Si vous n’avez pas fourni de phrase secrète lors de la création de votre paire de clés à l’étape 1, vous serez immédiatement connecté. Si vous avez fourni une phrase secrète, elle vous sera demandée maintenant. Après authentification, une nouvelle session shell devrait s’ouvrir pour vous avec le compte configuré sur le serveur Rocky Linux.
Si l’authentification basée sur clé a été réussie, continuez pour apprendre comment sécuriser davantage votre système en désactivant l’authentification basée sur mot de passe de votre serveur SSH.
Étape 4 — Désactivation de l’authentification par mot de passe sur votre serveur
Si vous avez réussi à vous connecter à votre compte via SSH sans mot de passe, vous avez configuré avec succès l’authentification basée sur clé SSH pour votre compte. Cependant, votre mécanisme d’authentification basé sur mot de passe est toujours actif, ce qui signifie que votre serveur est toujours exposé aux attaques par force brute.
Avant de terminer les étapes de cette section, assurez-vous d’avoir configuré l’authentification basée sur les clés SSH pour le compte root sur ce serveur, ou de préférence, d’avoir configuré l’authentification basée sur les clés SSH pour un compte non-root sur ce serveur avec des privilèges sudo
. Cette étape verrouillera les connexions basées sur des mots de passe, il est donc crucial de s’assurer que vous pourrez toujours obtenir un accès administratif.
Une fois que vous avez confirmé que votre compte distant dispose de privilèges administratifs, connectez-vous à votre serveur distant avec les clés SSH, soit en tant que root, soit avec un compte avec des privilèges sudo
. Ensuite, ouvrez le fichier de configuration du démon SSH:
- sudo vi /etc/ssh/sshd_config
À l’intérieur du fichier, recherchez une directive appelée PasswordAuthentication
. Cela peut être commenté avec un #
. Appuyez sur i
pour mettre vi
en mode insertion, puis décommentez la ligne et définissez la valeur sur no
. Cela désactivera votre capacité à vous connecter via SSH en utilisant des mots de passe de compte:
...
PasswordAuthentication no
...
Lorsque vous avez terminé de apporter des modifications, appuyez sur ESC
puis :wq
pour écrire les modifications dans le fichier et quitter. Pour implémenter réellement ces modifications, nous devons redémarrer le service sshd
:
- sudo systemctl restart sshd
Par précaution, ouvrez une nouvelle fenêtre de terminal et testez que le service SSH fonctionne correctement avant de fermer votre session actuelle:
- ssh username@remote_host
Une fois que vous avez vérifié que votre service SSH fonctionne toujours correctement, vous pouvez fermer en toute sécurité toutes les sessions serveur actuelles.
Le démon SSH sur votre serveur Rocky Linux ne répond désormais qu’aux clés SSH. L’authentification basée sur les mots de passe a été désactivée avec succès.
Conclusion
Vous devriez maintenant avoir la configuration de l’authentification basée sur la clé SSH sur votre serveur, ce qui vous permet de vous connecter sans fournir de mot de passe de compte.
Si vous souhaitez en savoir plus sur le travail avec SSH, consultez notre Guide essentiel SSH.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-rocky-linux-9