Configurer la clé d'authentification pour une connexion SSH distante dans Ubuntu 24.04
Ceci est un tutoriel simple qui montre comment désactiver l'authentification par mot de passe et utiliser une clé SSH à la place pour se connecter à distance à un serveur ou un bureau Ubuntu.
SSH (Secure Shell) est un moyen populaire et sécurisé de se connecter à des serveurs distants et/ou de transférer des données entre des machines locales et distantes. Lorsque vous essayez de vous connecter en SSH à un serveur distant, il demande généralement le mot de passe de l'utilisateur pour l'authentification.
Cependant, les mots de passe ne sont pas les plus sécurisés. Ils ne sont généralement pas suffisamment complexes ou longs pour se protéger contre les attaques, ou bien ils sont difficiles à mémoriser et à taper encore et encore à chaque connexion.
Pour être plus sécurisé et aussi gagner du temps, l'authentification par clé sécurisée est un bon choix. Et voici comment le configurer étape par étape.
Étape 1 : Générer une clé sécurisée paire
Une paire de clés SSH comprend généralement une clé privée et une clé publique. Le client local détient la clé privée, tandis que la clé publique associée est téléchargée sur le serveur distant.
Lorsque qu'une connexion SSH commence, le serveur teste si le client possède la clé privée. Si oui, il permet de se connecter. Sinon, il revient à une autre méthode d'authentification si elle existe (par exemple, demander un mot de passe).
Pour générer une paire de clés, ouvrez le terminal (Ctrl+Alt+T) et exécutez la commande ci-dessous sur votre ordinateur local:
ssh-keygenExécutez sudo apt install openssh-client si vous n'avez pas le paquet client SSH installé.
La commande créera par défaut une paire de clés ed25519. Ensuite, elle demandera soit d'appuyer sur Entrée pour enregistrer dans le fichier de clé par défaut, soit de taper manuellement /home/NOM_UTILISATEUR/.ssh/nom_de_clé_ici.
Ensuite, vous devez taper une phrase secrète (tapez juste dans votre esprit, sans retour d'astérisque) et confirmer pour chiffrer la clé, donc même si vous perdez la clé, d'autres ne peuvent pas l'utiliser sans la phrase secrète.
Étape 2 : Copier la clé publique sur le serveur distant
Après l'étape 1, vous devriez avoir les fichiers de clé privée et publique dans le dossier local .ssh.
Exécutez la commande pour naviguer vers ce dossier et lister son contenu. Ensuite, vous verrez les 2 fichiers clés.
cd ~/.ssh && lsREMARQUE : Avant d'exécuter la commande ci-dessous, assurez-vous que le serveur distant a openssh-server installé et que le service ssh.service (ssh.socket pour 24.04) est activé. De plus, il doit autoriser l'authentification par mot de passe.
Pour télécharger le public sur le serveur SSH, exécutez une commande similaire ci-dessous sur l'ordinateur local :
ssh-copy-id -i ~/.ssh/my_ssh_key.pub -p 22366 ji@localhostDans la commande, vous devez remplacer les options suivantes en conséquence :
-i ~/.ssh/my_ssh_key.pub– identifie le fichier clé. Remplacez le nom de la clémy_ssh_keypar le vôtre selon l'étape 1.-p 22366– indique le port d'écoute du serveur SSH distant. Par défaut, c'est 22.ji@localhost– ‘ji’ est le nom d'utilisateur sur le serveur distant auquel j'essaie de me connecter, “localhost” est le nom d'hôte distant. Dans ce cas, j'essaie de me connecter en SSH à une machine virtuelle. Vous devez le remplacer par nom_utilisateur@adresse_ip_serveur.
Après avoir exécuté avec succès la commande ssh-copy-id, le serveur SSH distant devrait maintenant avoir la « clé publique » écrite comme une nouvelle ligne dans le fichier par défaut ~/.ssh/authorized_keys.
Vous pouvez ensuite essayer la commande ssh -p xxx user@ip-address sur votre ordinateur local. Cela devrait faire apparaître une boîte de dialogue demandant le mot de passe (que vous avez défini à l'étape 1) pour déverrouiller la clé privée.
Si vous ne voulez pas saisir le mot de passe encore et encore, cochez simplement "Déverrouiller automatiquement cette clé chaque fois que je suis connecté" dans la boîte de dialogue contextuelle.
Dans le cas où cela NE fonctionnerait PAS, assurez-vous que votre serveur SSH a « pubkeyauthentication » réglé sur « oui », et qu'il inclut « .ssh/authorized_keys » comme « authorizedkeysfile », bien qu'ils soient généralement des paramètres par défaut du démon SSH.
Pour identifier, utilisez la commande :
sudo sshd -T |grep -e "authorizedkeysfile" -e "pubkeyauthentication"Étape 3 : Désactiver la connexion SSH avec mot de passe
Si tout se passe bien, vous pouvez désactiver l'authentification par mot de passe pour sécuriser le serveur SSH, bien que cela soit OPTIONNEL.
1. Tout d'abord, connectez-vous à votre serveur SSH distant. Ensuite, exécutez la commande pour éditer le fichier de configuration du démon sshd :
sudo nano /etc/ssh/sshd_configLorsque le fichier s'ouvre, faites :
- Trouvez « PasswordAuthentication yes » et définissez-le sur PasswordAuthentication no. Supprimez « # » s'il est présent au début, sinon cela ne fonctionnera pas.
- Si la ligne KbdInteractiveAuthentication est activée (sans # au début), réglez-la sur non. Elle est utilisée pour la connexion par mot de passe à usage unique, qui permet cependant également la connexion par mot de passe statique à moins que vous ne l'ayez désactivée dans les paramètres PAM.
- Si ChallengeResponseAuthentication est activé, définissez également sur non.
Enfin, appuyez sur Ctrl+S pour enregistrer le fichier, et Ctrl+X pour quitter.
2. Ensuite, exécutez la commande pour lister le contenu du répertoire /etc/ssh/sshd_config.d/ :
ls /etc/ssh/sshd_config.d/Le répertoire est vide par défaut ! Mais tout fichier .conf dans ce répertoire peut remplacer vos configurations SSH, car ils sont chargés en premier dans /etc/ssh/sshd_config.
3. Pour vérifier votre configuration et vérifier s'il y a des erreurs, utilisez la commande :
sudo sshd -T | grep authentication4. Pour appliquer les changements, exécutez les 2 commandes ci-dessous une à une :
sudo systemctl daemon-reload
sudo systemctl restart ssh.socketPour les anciennes versions d'Ubuntu 22.04 et antérieures, vous pouvez exécuter la commande ci-dessous à la place pour appliquer les modifications :
sudo systemctl status ssh.service





