Un bon administrateur de serveur utilise plusieurs mots de passe forts qui sont difficiles à mémoriser ; cependant, il est difficile et peu pratique de saisir chacun d'entre eux à chaque fois que vous accédez à des serveurs distants. Pour remédier à ce problème, nous allons parler dans ce tutoriel des éléments suivants sans mot de passe SSH et comment le configurer sous Linux !
Qu'est-ce que le SSH sans mot de passe ?
SSH sans mot de passe vous permet d'exporter un client SSH au serveur distant afin que le client puisse se connecter sans mot de passe. Pour ce faire, on utilise une paire de clés asymétriques.
La procédure d'authentification se déroule comme suit :
Lorsque le client tente d'accéder au SSH le serveur vérifie d'abord si la clé publique du client est autorisée. Si elle est autorisée, le processus d'authentification se poursuit. S'il n'est pas autorisé, le processus se termine et vous ne pouvez pas accéder au serveur.
Si le serveur autorise la clé publique du client, il chiffre un message avec la clé publique du client. Une fois que le serveur a chiffré le message, il l'envoie au client.
Le client reçoit le message du serveur. Une fois le message reçu, le client tente de le décrypter à l'aide de la clé privée. Si le client déchiffre le message à l'aide de la clé privée, le serveur le détecte et la connexion au serveur SSH est établie.
Si le client ne peut pas décrypter le message envoyé par le serveur, le processus de connexion au serveur est interrompu.

Pourquoi utiliser SSH Connexion sans mot de passe
SSH sans mot de passe offre plusieurs avantages par rapport aux méthodes de connexion traditionnelles basées sur un mot de passe. Voici quelques-uns des principaux avantages qui font que l'utilisation de SSH sans mot de passe en vaut la peine :
Connexion pratique et sécurisée
Le fait que vous n'ayez pas à vous souvenir et à saisir des mots de passe pour vous connecter à un serveur SSH rend le processus d'authentification pratique. De plus, il est basé sur la cryptographie à clé publique-privée, ce qui élimine le risque de vol de mots de passe par le biais de homme du milieu et autres attaques par hameçonnage.
Automatiser les tâches de sauvegarde
À l'aide de Rsync et d'autres utilitaires, vous pouvez automatiser la tâche consistant à effectuer une sauvegarde hebdomadaire du contenu généré dans un bureau situé aux États-Unis et à l'enregistrer dans un bureau situé en Chine. Le processus serait crypté via SSH et entièrement automatique, car vous n'auriez pas à saisir de mot de passe.
Monter un système de fichiers distant
SSH sans mot de passe est utile si vous devez monter un système de fichiers distant avec SSHFS. En accédant au serveur SSHFS sans mot de passe, nous pouvons faire en sorte que le serveur SSHFS se monte lui-même lorsque nous démarrons notre client.
En outre, plusieurs serveurs Git utilisent l'authentification par clé publique SSH. Par conséquent, la paire de clés asymétriques que vous créez pour vous connecter à un serveur SSH peut avoir d'autres utilisations, comme l'authentification lors de la connexion à notre serveur Git.
Configuration de la connexion SSH sans mot de passe sous Linux
#1. Assurez-vous que le serveur et le client SSH sont installés.
La première chose à faire est de s'assurer que le système qui servira de serveur dispose d'un serveur SSH installé. Pour ce faire, nous devons ouvrir un terminal et taper la commande suivante :
sudo apt-get install openssh-server
Si aucun nouveau paquetage n'est installé dans notre système d'exploitation, l'ordinateur qui servira de serveur a déjà le serveur SSH installé et fonctionne. De même, assurez-vous que le système qui jouera le rôle de client dispose des paquets nécessaires pour se connecter au serveur SSH. Pour ce faire, ouvrez un terminal et tapez la commande suivante :
sudo apt-get install openssh-client
Aujourd'hui, la plupart des distributions Linux ont un client et un serveur SSH installés par défaut.
#2. Créer les paires de clés asymétriques
Une fois que vous êtes sûr que le serveur SSH et le client ont les paquets nécessaires, vous pouvez générer les clés asymétriques pour accéder à notre serveur SSH sans entrer de mot de passe.
Pour ce faire, sur l'ordinateur qui fera office de client, vous devez ouvrir un terminal et taper la commande suivante :
ssh-keygen -b 4096 -t rsa
La signification de chacun des paramètres de la commande est la suivante :
ssh-keygen
: c'est la commande qui génère la paire de clés.
-b 4096
Vous indiquez que la clé asymétrique à générer a une taille de 4096 bits. D'autres tailles que vous pouvez choisir, par exemple, sont 1024 ou 2048.
-t rsa
: Indique que l'algorithme utilisé pour générer la paire de clés doit être RSA. D'autres algorithmes peuvent être utilisés : DSA, ECDSA, RSA1 et ED25519.
Juste après avoir exécuté la commande, on vous demandera l'emplacement où vous voulez enregistrer les clés et le nom que vous voulez leur donner. Il vous suffit d'appuyer sur la touche Entrée. De cette façon, les clés seront sauvegardées dans l'emplacement standard, c'est-à-dire, /home/ user /.ssh/ et portera le nom standard id_rsa.
Ensuite, on vous demandera si vous voulez entrer un mot de passe pour crypter la clé privée. Comme nous voulons nous connecter au serveur sans entrer de mot de passe, appuyez sur la touche Entrée sans entrer de mot de passe.
Enfin, il vous est demandé de saisir à nouveau le mot de passe. Comme nous n'avons pas saisi de mot de passe, appuyez à nouveau sur la touche Entrée.

Après avoir effectué ces étapes, les clés asymétriques seront créées dans l'emplacement ~/.ssh.
#3. Copier la clé publique SSH sur le serveur distant
Il existe deux types de Clés SSH pour organiser l'accès sans mot de passe via SSH : une clé publique non secrète (une clé publique) et une clé secrète (une clé privée), id_rsa est votre clé privée, et id_rsa.pub est votre clé publique.
Vous devez copier la clé publique sur le serveur distant, soit à l'aide de la commande ssh-copy-id, soit manuellement.
La syntaxe typique de la commande de copie de clé publique SSH est la suivante.
ssh-copy-id username@remote.host.name
L'exemple suivant peut être plus clair :
ssh-copy-id root@192.168.1.6

Une autre solution consiste à se connecter au serveur distant et à créer un fichier texte dans le répertoire ~/.ssh, par exemple en exécutant la commande suivante.
nano ~/.ssh/authorized_keys
Copiez le contenu de votre fichier ~/.ssh/id_rsa.pub sur votre machine locale dans ce fichier, enregistrez le fichier et quittez l'éditeur de texte.

#4. Test d'accès sans mot de passe via SSH
Pour tester le SSH sans mot de passe, il suffit d'essayer d'accéder au serveur SSH :
$ ssh remote_username@server_ip_address
Si tout se passe bien, vous serez immédiatement connecté sans mot de passe.
Désactiver la connexion SSH sans mot de passe sous Linux
Pour désactiver la connexion sans mot de passe SSH, ouvrez le fichier de configuration SSH à l'aide de votre éditeur de texte préféré. Sur la plupart des distributions, le fichier de configuration se trouve dans /etc/ssh/sshd_config.
Localisez la ligne qui dit Autoriser les mots de passe vides oui et changement Autoriser les mots de passe vides oui à Autoriser les mots de passe vides non.
Enregistrez les modifications apportées au fichier de configuration et quittez l'éditeur de texte.
Redémarrez le SSH pour appliquer les modifications :
sudo systemctl restart sshd
Dernières paroles
Les mots de passe, aussi compliqués soient-ils, sont moins sûrs, et lorsque vous avez de nombreux serveurs ou que vous devez vous connecter fréquemment, le processus devient inefficace. L'authentification ssh sans mot de passe utilisant des clés asymétriques n'est pas seulement plus pratique, elle est aussi plus sûre et vous protège contre les attaques par hameçonnage.
Vous pouvez également explorer Chiffrement symétrique.