Comment configurer SSH sans mot de passe sous Linux

Comment configurer SSH sans mot de passe sous Linux

SSH est l’abréviation de Secure Shell. C’est un protocole réseau à source ouverte qui peut être utilisé pour se connecter à des serveurs et exécuter des commandes à distance, ce qui est idéal pour les utilisateurs de VPS.

Il y a deux possibilités pour activer le SSH :

  • Authentification par mot de passe
  • Authentification par clé publique

L’authentification par clé publique est souvent appelée SSH sans mot de passe.

Pourquoi utiliser le SSH sans mot de passe ?

Les utilisateurs trouvent parfois les options protégées par un mot de passe difficiles à retenir et inconfortables. Il se peut que vous vous trouviez dans un environnement où vous devez fréquemment saisir votre mot de passe.

Le SSH sans mot de passe présente quelques avantages :

  • Connexion facile et non interactive. Les utilisateurs n’ont pas besoin de taper le mot de passe à chaque nouvelle session
  • Meilleure sécurité par rapport aux mots de passe car il fonctionne sur la cryptographie à clé publique-privée
  • Plus fiable
  • Une meilleure authentification et une meilleure gestion des autorisations
  • Une bonne solution pour les petites et grandes infrastructures
  • Facile à créer et à entretenir

Pour commencer à utiliser le SSH sans mot de passe, vous devez générer une clé publique. Dans ce tutoriel, nous nous concentrerons sur la version 2 de SSH, qui est le protocole le plus récent et le plus sécurisé.

Connectez-vous à votre serveur VPS en utilisant SSH, et vous pourrez commencer !

Tout d’abord, vous pouvez vérifier si la clé SSH de la machine cliente existe déjà. Cela évitera d’écraser la configuration actuelle. Vous pouvez utiliser la commande ci-dessous pour le savoir :

ls -al ~/.ssh/id_*.pub

Si vous trouvez une clé existante, vous pouvez alors soit sauter les étapes de génération de la clé SSH, soit remplacer la configuration actuelle, soit créer une sauvegarde de la clé existante. Si la clé n’existe pas, vous verrez le résultat suivant :

ls: cannot access /users/appsadm/.ssh/id_*.pub: No such file or directory

Ensuite, nous pouvons procéder à la génération de la clé SSH.

SSH sans mot de passe sous Ubuntu et CentOS :

Pour générer une clé publique et privée sur Ubuntu ou CentOS, utilisez la commande :

ssh-keygen -t rsa

L’option -t signifie type, tandis que RSA est le protocole utilisé pour la génération de clés. RSA est le type par défaut – vous pouvez donc également utiliser la version plus simple de la commande – ssh-keygen.

La clé par défaut est de 2048 bits. Toutefois, si vous souhaitez une sécurité plus forte, vous pouvez modifier la valeur à 4096 bits. Dans ce cas, la commande sera :

ssh-keygen -t rsa -b 4096

Ceci est un processus interactif de génération de clés et vous serez invité à répondre à quelques questions comme :

  • Entrez le fichier dans lequel vous souhaitez enregistrer la clé (/home/.ssh.id_rsa)
  • Entrez la phrase secrète (vide pour aucune)

Vous pouvez appuyer sur la touche Entrée pour ces deux questions et cela prendra les valeurs par défaut. Une phrase secrète est utilisée pour crypter la clé privée ; cependant, elle n’est pas obligatoire et peut être laissée vide. La clé privée sera enregistrée à l’emplacement par défaut – .ssh/id_rsa.

La clé publique sera sauvegardée dans le fichier .ssh/id_rsa.pub. La génération de la clé est ainsi terminée. Vous pouvez vérifier les fichiers en utilisant n’importe quel éditeur.

Copier la clé publique pour activer le SSH sans mot de passe

La copie de la clé publique vers une machine de destination peut se faire de trois manières :

  • Utiliser la commande ssh-copy-id
  • Copie en utilisant SSH
  • Copie manuelle

La première option est la plus préférée et la plus rapide. La commande ssh-copy-id est par défaut incluse dans la plupart des saveurs de Linux. Cependant, dans certains cas, si vous rencontrez des problèmes en utilisant ssh-copy-id ou si vous n’avez pas accès à cette commande, vous pouvez essayer les options restantes.

Méthode 1 : Utilisation de la commande ssh-copy-id

La syntaxe de base pour utiliser cette commande est la suivante :

ssh-copy-id utilisateur_distant@adresse_IP_distante

Un message vous demande le mot de passe de la machine distante. Une fois l’authentification réussie, la clé publique SSH générée sera ajoutée au fichier authorized_keys de la machine distante. Après l’ajout de la clé, la connexion sera automatiquement fermée.

Méthode 2 : Copier la clé privée en utilisant SSH

La méthode suivante utilise SSH pour copier la clé privée. Cette méthode peut être utilisée lorsque vous avez un accès SSH au serveur basé sur un mot de passe. La commande ci-dessous s’occupe de la procédure. Il vous suffit d’entrer le nom d’utilisateur de l’utilisateur distant et l’adresse IP de la machine.

cat ~/.ssh/id_rsa.pub | ssh utilisateur_distant@adresse_IP_distante "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

La clé sera ainsi ajoutée au fichier authorized_keys de la machine distante.

Méthode 3 : Copier manuellement la clé publique

La troisième méthode est un peu plus difficile car elle est entièrement manuelle. Cependant, dans certains cas où les autres méthodes ne fonctionnent pas, vous pouvez utiliser celle-ci ! Vous devrez ajouter manuellement le contenu du fichier id_rsa.pub au fichier ~/.ssh/authorized_keys du serveur distant.

Sur la machine source, vous pouvez afficher le contenu du fichier id_rsa.pub en utilisant l’éditeur vi ou la commande cat :

cat ~/.ssh/id_rsa.pub

Cela afficherait un résultat contenant la clé commençant par ssh-rsa. Copiez-le ! Ensuite, sur le serveur distant, connectez-vous et créez le fichier .ssh s’il n’existe pas déjà.

mkdir -p ~/.ssh

Vous pouvez de la même manière créer le fichier authorized_keys. Ajoutez la clé publique SSH copiée au fichier vide comme indiqué ci-dessous :

echo SSH_public_key >> ~/.ssh/authorized_keys

SSH_public_key est la clé publique que vous avez copiée de la machine source. Elle commencera par ssh-rsa.

Une fois la clé copiée, vous pouvez fournir les autorisations requises au répertoire .ssh des serveurs distants en utilisant la commande chmod.

chmod -766 ~/.ssh

Tester le SSH sans mot de passe

Avec cela, nous aurions dû réussir à activer le SSH sans mot de passe, et effectuer la configuration de base. Pour tester la fonctionnalité, vous pouvez essayer d’accéder au serveur distant via le serveur source. La syntaxe de la commande ressemblerait à ceci :

ssh utilisateur_distant@adresse_IP_distante

Si tout a bien fonctionné, vous pourrez alors vous connecter automatiquement sans avoir à saisir le mot de passe.

Comment désactiver le SSH sans mot de passe

Si vous décidez que le SSH sans mot de passe n’est pas pour vous, vous pouvez le désactiver en suivant les étapes ci-dessous. Pour effectuer ce changement, ouvrez le fichier de configuration SSH – /etc/ssh/ssh_config. Là encore, n’importe quel éditeur fonctionnera, nous utilisons nano. Vous trouverez ici une entrée avec PasswordAuthentication. Modifiez les lignes comme indiqué :

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Une fois que cela est modifié, sauvegardez le fichier et redémarrez SSH. Voici comment le faire sur Ubuntu 22.04 :

sudo systemctl restart ssh

Et la commande pour CentOS 7 :

sudo systemctl restart sshd