Un bon administrateur de serveur utilise plusieurs mots de passe forts difficiles à mémoriser ; cependant, il est difficile et incommode d'entrer chacun d'entre eux chaque fois que vous accédez à des serveurs distants. Pour pallier ce problème, dans ce tutoriel, nous parlerons de sans mot de passe SSH et comment vous pouvez le configurer sous Linux !
What is Passwordless SSH?
SSH sans mot de passe vous permet d'exporter un client SSH clé publique au serveur distant afin que le client puisse se connecter sans avoir besoin d'un mot de passe. La façon d'y parvenir est d'utiliser une paire de clés asymétrique.
La procédure d'authentification fonctionne comme suit :
Lorsque le client tente d'accéder au serveur SSH, le serveur vérifie d'abord si la clé publique du client est autorisée. S'il est autorisé, 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, le serveur crypte 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 essaie de déchiffrer ce message avec la clé privée. Si le client déchiffre le message à l'aide de la clé privée, le serveur le détectera et la connexion au serveur SSH sera établie.
Si le client ne peut pas déchiffrer le message envoyé par le serveur, le processus de connexion au serveur est abandonné.

Why use SSH Passwordless login
SSH sans mot de passe offre plusieurs avantages par rapport aux méthodes de connexion traditionnelles basées sur un mot de passe. Certains des avantages les plus importants qui rendent l'utilisation de SSH sans mot de passe intéressant sont :
Connexion pratique et sécurisée
Le fait que vous n'aurez pas à mémoriser 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, éliminant ainsi le risque de vol de mots de passe via -middle man-in le- qualité attaques de phishing.
Automatiser les tâches de sauvegarde
En utilisant Rsync et d'autres utilitaires, vous pouvez automatiser la tâche de faire une sauvegarde hebdomadaire du contenu généré dans un bureau aux États-Unis et de l'enregistrer dans un bureau situé en Chine. Le processus serait crypté via SSH et complètement automatique car vous n'aurez pas à entrer 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.
De plus, 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, telles que l'authentification lors de la connexion à notre serveur Git.
Setup SSH Passwordless Login in Linux
# 1. Assurez-vous que le serveur et le client SSH sont installés
La première chose que vous devez faire est de vous assurer que le système qui agira en tant que 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 package n'est installé dans notre système d'exploitation, l'ordinateur qui agira en tant que serveur a déjà le serveur SSH installé et en cours d'exécution. De même, assurez-vous que le système qui agira en tant que client dispose des packages nécessaires pour se connecter au serveur SSH. Pour cela, ouvrez un terminal et tapez la commande suivante :
sudo apt-get install openssh-client
De nos jours, 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 disposent des packages 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 cela, sur l'ordinateur qui fera office de client, il faut 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. Les 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 que nous pouvons utiliser sont DSA, ECDSA, RSA1 et ED25519.
Juste après avoir exécuté la commande, il vous sera demandé l'emplacement où vous souhaitez enregistrer les clés et le nom que vous souhaitez leur donner. Appuyez simplement sur la touche Entrée. De cette façon, les clés qui seront enregistrées à l'emplacement standard, c'est-à-dire /home/ utilisateur /.ssh/ et aura le nom standard id_rsa.
Ensuite, il vous sera demandé si vous souhaitez entrer un mot de passe pour chiffrer la clé privée. Puisque 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, vous êtes invité à ressaisir le mot de passe. Puisque nous n'avons entré aucun mot de passe, appuyez à nouveau sur la touche Entrée.

Après avoir effectué ces étapes, les clés asymétriques seront créées à l'emplacement ~/.ssh.
# 3. Copiez 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 option 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 ordinateur local dans ce fichier, enregistrez le fichier et quittez l'éditeur de texte.

# 4. Tester l'accès sans mot de passe via SSH
Pour tester si le SSH sans mot de passe essaie simplement d'accéder au serveur SSH :
$ ssh remote_username@server_ip_address
Si tout se passait bien, vous seriez connecté immédiatement sans mot de passe.
Disable SSH Passwordless Login in Linux
Pour désactiver la connexion SSH sans mot de passe, 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 lit Autoriser les mots de passe vides Oui et changer PermitEmptyPasswords oui à PermitEmptyPasswords non.
Enregistrez les modifications apportées au fichier de configuration et quittez l'éditeur de texte.
Redémarrez SSH pour appliquer les modifications :
sudo systemctl restart sshd
Mot de la fin
Les mots de passe, quelle que soit leur complexité, sont moins sécurisés, 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 à l'aide de clés asymétriques est non seulement plus pratique, mais également plus sûre et vous protège contre les attaques de phishing.
Vous pouvez également explorer Cryptage symétrique.