Aller au contenu

3. Désactiver la connexion par mot de passe

Pour accéder de manière sécurisée à un serveur distant, une paire de clés SSH est utilisée comme mécanisme d’authentification. Cela implique deux clés :

  1. Une clé privée, que vous conservez en sécurité sur votre machine locale.
  2. Une clé publique, qui est partagée avec le serveur.

Cela élimine le besoin de mots de passe lors de la connexion et améliore considérablement la sécurité.

Vous pouvez suivre les instructions de la section 3.1.1 ou 3.1.2, selon vos besoins :

  • Utilisez 3.1.1 pour générer et stocker la clé à l’emplacement par défaut.
  • Utilisez 3.1.2 pour générer et organiser la clé dans un sous-dossier personnalisé pour une meilleure gestion.

Cette section vous guide dans la génération d’une paire de clés SSH standard pouvant être utilisée pour s’authentifier auprès de serveurs distants.

Exécutez la commande suivante sur votre machine locale pour générer une paire de clés SSH :

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa : Spécifie l’algorithme RSA pour la clé.
  • -b 4096 : Définit la taille de la clé à 4096 bits (utilisez 2048 si vous préférez une clé plus petite).
  • -C "your_email@example.com" : Ajoute un commentaire à la clé, généralement votre adresse e-mail, pour une identification plus facile.

Lorsque vous y êtes invité :

  • Entrez un nom de fichier (ou appuyez sur Entrée pour utiliser l’emplacement par défaut, par exemple, ~/.ssh/id_rsa).
  • (Facultatif) Fournissez une phrase de passe pour la clé privée pour une sécurité supplémentaire.

Cela crée :

  • Une clé privée (par exemple, ~/.ssh/id_rsa).
  • Une clé publique (par exemple, ~/.ssh/id_rsa.pub).

3.1.2 Générer une paire de clés SSH dans un sous-dossier personnalisé

Section intitulée « 3.1.2 Générer une paire de clés SSH dans un sous-dossier personnalisé »

Cette approche est utile si vous devez gérer plusieurs clés SSH pour différents serveurs ou projets. Elle vous permet de stocker les clés SSH dans des sous-dossiers personnalisés, offrant une manière structurée d’organiser et de gérer vos clés à travers différents environnements.

Vous pouvez générer une clé SSH dans un sous-dossier au sein de .ssh/ pour garder les choses organisées et gérer facilement plusieurs clés pour différents projets ou serveurs.

Pour générer une clé SSH dans un sous-dossier personnalisé à l’intérieur du répertoire .ssh/, suivez ces étapes :

.ssh/ :

  1. Créer le sous-dossier (s’il n’existe pas déjà) :
mkdir -p ~/.ssh/my_custom_folder

Remplacez my_custom_folder par le nom de dossier souhaité.

  1. Générer la clé dans le sous-dossier personnalisé : Exécutez la commande ssh-keygen en spécifiant le chemin complet du fichier de clé :
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/my_custom_folder/id_rsa

Vérifier les permissions correctes Assurez-vous que votre dossier .ssh/, le sous-dossier à l’intérieur et les fichiers de clés associés ont les permissions correctes :

chmod 700 ~/.ssh/
chmod 700 ~/.ssh/my_custom_folder/
chmod 600 ~/.ssh/my_custom_folder/id_rsa
chmod 644 ~/.ssh/my_custom_folder/id_rsa.pub

Utilisez la commande suivante pour copier votre clé publique sur le serveur :

ssh-copy-id -i .ssh/id_rsa.pub username@server_ip
  • Remplacez username par votre nom d’utilisateur sur le serveur.
  • Remplacez server_ip par l’adresse IP ou le domaine du serveur.

Le mot de passe de votre serveur vous sera demandé. Une fois authentifié, la clé publique sera ajoutée sur le serveur dans ~/.ssh/authorized_keys pour cet utilisateur.

ssh -i ~/my_custom_folder/id_rsa username@server_ip

Lors de la connexion au serveur avec la clé personnalisée, vous devrez peut-être spécifier explicitement le chemin de la clé privée si elle n’est pas détectée automatiquement.

ssh -i ~/.ssh/id_rsa username@server_ip

3.4. Simplifier la connexion SSH avec les paramètres de configuration

Section intitulée « 3.4. Simplifier la connexion SSH avec les paramètres de configuration »

Pour faciliter votre processus de connexion SSH, vous pouvez configurer le client SSH pour qu’il mémorise et utilise automatiquement votre/vos clé(s) SSH personnalisée(s) pour des serveurs spécifiques en modifiant le fichier ~/.ssh/config. Voici comment procéder :

  1. Modifier/Créer le fichier de configuration SSH : Ouvrez ou créez le fichier ~/.ssh/config en utilisant votre éditeur de texte favori (comme vim ou vim).
vim ~/.ssh/config
  1. Ajouter une entrée d’hôte SSH : Ajoutez la configuration suivante au fichier :
Host server-alias
HostName server_ip
User username
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
ServerAliveCountMax 240

Remplacez :

  • server-alias par un nom que vous préférez utiliser comme alias pour ce serveur (par exemple, myserver).
  • server_ip par l’adresse IP ou le domaine du serveur.
  • username par votre nom d’utilisateur sur le serveur.
  • ~/.ssh/id_rsa par le chemin vers votre clé privée (ajustez si vous avez généré une clé dans un sous-dossier personnalisé, par exemple, ~/.ssh/my_custom_folder/id_rsa).
  • ServerAliveInterval 60 : Envoie un paquet keep-alive au serveur toutes les 60 secondes.
  • ServerAliveCountMax 240 : Permet à la connexion de rester active pendant 4 heures (240 x 60).
  1. Enregistrer et quitter : Enregistrez le fichier et quittez votre éditeur.
  2. Définir les permissions correctes : Assurez-vous que le fichier ~/.ssh/config a les permissions correctes :
    chmod 600 ~/.ssh/config
  3. Tester la connexion SSH : Vous pouvez maintenant vous connecter au serveur simplement en utilisant l’alias configuré :
ssh server-alias

Cela utilisera automatiquement la clé et le nom d’utilisateur spécifiés pour la connexion.

3.4.2 Exemple avec une clé et un dossier personnalisés

Section intitulée « 3.4.2 Exemple avec une clé et un dossier personnalisés »

Si vous avez généré la clé dans un sous-dossier personnalisé (par exemple, ~/.ssh/my_custom_folder), la configuration ressemblera à ceci :

Host server-alias
HostName server_ip
User username
IdentityFile ~/.ssh/my_custom_folder/id_rsa
ServerAliveInterval 60
ServerAliveCountMax 240

Maintenant, exécutez ssh server-alias pour vous connecter rapidement sans spécifier explicitement le nom d’utilisateur ou le chemin de la clé.

3.5 Désactiver l’authentification par mot de passe sur le serveur

Section intitulée « 3.5 Désactiver l’authentification par mot de passe sur le serveur »

Pour définir “PasswordAuthentication” à “no” sur le serveur, vous devez modifier le fichier de configuration du serveur SSH (sshd_config). Cela garantit que seule l’authentification par clé est autorisée, renforçant davantage la sécurité du serveur. Voici comment procéder :


3.5.1. Désactiver l’authentification par mot de passe sur le serveur

Section intitulée « 3.5.1. Désactiver l’authentification par mot de passe sur le serveur »
  1. Accéder au serveur : Connectez-vous à votre serveur via SSH :
ssh username@server_ip
  1. Modifier le fichier de configuration SSH : Ouvrez le fichier sshd_config avec un éditeur de texte (par exemple, vim, vim) :
sudo vim sudo vim /etc/ssh/sshd_config.d/50-cloud-init.conf
  1. Trouver et mettre à jour le paramètre PasswordAuthentication : Recherchez la ligne PasswordAuthentication dans le fichier. Si elle n’existe pas, ajoutez-la. Définissez sa valeur à no :
PasswordAuthentication no
  1. (Facultatif) Assurez-vous également que PubkeyAuthentication est défini à yes pour autoriser l’authentification par clé :
PubkeyAuthentication yes

L’authentification par clé publique (authentification par clé SSH) est activée par défaut. Cela signifie que vous n’avez pas besoin d’ajouter ou de modifier explicitement la ligne PubkeyAuthentication yes sauf si votre configuration a été modifiée ou si vous souhaitez vous assurer explicitement qu’elle est définie.

  1. Enregistrer et quitter :

  2. Redémarrer le service SSH : Redémarrez le serveur SSH pour appliquer les modifications :

sudo systemctl restart ssh
  1. Tester la configuration : Assurez-vous que vous pouvez vous connecter au serveur avec votre clé avant de fermer votre session SSH actuelle :
ssh -i ~/.ssh/id_rsa username@server_ip

3.5.2. Vérifier que la connexion par mot de passe est désactivée

Section intitulée « 3.5.2. Vérifier que la connexion par mot de passe est désactivée »

Pour confirmer les modifications, essayez de vous connecter au serveur sans fournir de clé. La connexion devrait être refusée :

ssh username@server_ip
username@server_ip: Permission denied (publickey).

Si tout fonctionne comme prévu, votre serveur est maintenant sécurisé et l’authentification par mot de passe est désactivée.