La commande ssh-copy-id est un outil utile pour configurer facilement l'authentification basée sur une clé SSH entre les serveurs. Cependant, vous pouvez occasionnellement rencontrer l'erreur "/usr/bin/ssh-copy-id: error: no identities found" lorsque vous essayez d'utiliser cette commande. Ce tutoriel vous guidera à travers les étapes de dépannage et de résolution de ce problème, assurant un processus d'authentification basé sur une clé SSH fluide. À la fin de ce lab, vous comprendrez comment fonctionne l'authentification par clé SSH et serez en mesure de la configurer correctement sur vos systèmes.
Comprendre l'authentification par clé SSH
Avant de nous plonger dans le dépannage de l'erreur "no identities found", il est important de comprendre ce qu'est l'authentification par clé SSH et comment elle fonctionne.
Qu'est-ce que l'authentification par clé SSH ?
L'authentification par clé SSH (Secure Shell) est une méthode de connexion sécurisée à des systèmes distants sans avoir à saisir un mot de passe à chaque fois. Elle utilise une paire de clés cryptographiques :
Une clé privée qui reste sur votre machine locale
Une clé publique qui est copiée sur le serveur distant
Lorsque vous essayez de vous connecter à un serveur distant, votre client SSH utilise votre clé privée pour créer une signature. Le serveur vérifie cette signature à l'aide de votre clé publique stockée dans son fichier authorized_keys. Si la signature est valide, vous obtenez l'accès sans avoir besoin de saisir un mot de passe.
Qu'est-ce que ssh-copy-id ?
La commande ssh-copy-id est un utilitaire qui simplifie le processus de copie de votre clé publique vers un serveur distant. Elle ajoute votre clé publique au fichier ~/.ssh/authorized_keys du serveur distant, permettant une authentification sans mot de passe lors de futures connexions.
Vérifions si vous avez déjà des clés SSH sur votre système. Exécutez la commande suivante dans votre terminal :
ls -la ~/.ssh
Si vous ne voyez aucun fichier ou si le répertoire .ssh n'existe pas, ne vous inquiétez pas - nous allons tout créer à l'étape suivante.
Générer des clés SSH
Si vous n'avez pas de clés SSH ou si vous souhaitez en créer de nouvelles, vous pouvez les générer à l'aide de la commande ssh-keygen. C'est souvent la première étape pour résoudre l'erreur "no identities found".
Créer une nouvelle paire de clés SSH
Générons une nouvelle paire de clés SSH en exécutant la commande suivante :
-b 4096 spécifie la longueur en bits (chiffrement plus fort)
-C ajoute un commentaire (généralement un e-mail) pour aider à identifier la clé
Lorsque vous exécutez cette commande, vous serez invité à :
Entrer un emplacement de fichier pour enregistrer la clé (appuyez sur Entrée pour utiliser l'emplacement par défaut ~/.ssh/id_rsa)
Entrer une phrase de passe (vous pouvez appuyer sur Entrée deux fois pour ne pas avoir de phrase de passe, mais en utiliser une ajoute une couche de sécurité supplémentaire)
La sortie devrait ressembler à ceci :
Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD your_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
Vérifier la création de la clé SSH
Vérifions maintenant que les clés ont été créées correctement :
ls -la ~/.ssh
Vous devriez maintenant voir à la fois la clé privée (id_rsa) et la clé publique (id_rsa.pub) dans la sortie :
Regardons également le contenu de votre fichier de clé publique :
cat ~/.ssh/id_rsa.pub
La sortie doit être une seule ligne commençant par ssh-rsa suivie d'une longue chaîne de caractères et se terminant par votre adresse e-mail ou votre commentaire.
Maintenant que nous avons confirmé l'existence de nos clés SSH, nous pouvons passer à l'étape suivante : le dépannage et la résolution de l'erreur "no identities found".
Comprendre et résoudre l'erreur "No Identities Found" (Aucune identité trouvée)
Maintenant que nous avons nos clés SSH en place, comprenons pourquoi l'erreur "no identities found" se produit et comment la corriger.
Causes courantes de l'erreur
L'erreur "no identities found" se produit généralement pour l'une des raisons suivantes :
Les clés SSH n'existent pas
Les clés SSH ne se trouvent pas à l'emplacement par défaut
Les clés SSH ont des permissions incorrectes
La commande ssh-copy-id ne trouve aucune clé publique à utiliser
Étant donné que nous avons déjà confirmé que nos clés SSH existent à l'emplacement par défaut, vérifions les permissions.
Vérification et correction des permissions des clés SSH
SSH est très pointilleux sur les permissions des fichiers pour des raisons de sécurité. Exécutez la commande suivante pour vérifier les permissions de votre répertoire .ssh et de son contenu :
ls -la ~/.ssh
Pour une sécurité appropriée :
Le répertoire .ssh doit avoir les permissions 700 (rwx------)
La clé privée (id_rsa) doit avoir les permissions 600 (rw-------)
La clé publique (id_rsa.pub) doit avoir les permissions 644 (rw-r--r--)
Si vos permissions sont incorrectes, vous pouvez les corriger avec les commandes suivantes :
-i spécifie le fichier d'identité (clé publique) à utiliser
username est votre nom d'utilisateur sur le serveur distant
remote_host est le nom d'hôte ou l'adresse IP du serveur distant
Pour notre environnement de laboratoire, nous allons simuler cela en utilisant la machine locale. Exécutez :
ssh-copy-id -i ~/.ssh/id_rsa.pub labex@localhost
Vous serez invité à entrer le mot de passe de l'utilisateur distant.
Ouvrez une fenêtre de terminal dans l'environnement de bureau, seul le terminal de l'environnement de bureau aura les variables d'environnement définies.
Pour récupérer le mot de passe, exécutez la commande suivante.
printenv | grep PASSWORD
Note : Vous devez exécuter cette commande dans le terminal de l'environnement de bureau, et non dans le terminal que vous avez ouvert à partir de la barre de menu supérieure.
Cette commande affichera toutes les variables d'environnement contenant "PASSWORD". Recherchez une ligne qui dit LABEX_PASSWORD=.... Les caractères après le signe égal sont votre mot de passe.
Vous entreriez ce mot de passe, et la clé publique serait copiée sur le serveur distant.
Si vous voyez un message comme "Number of key(s) added: 1" (Nombre de clés ajoutées : 1), alors votre clé a été copiée avec succès.
Vérification de l'authentification par clé SSH
Maintenant que nous avons résolu l'erreur "no identities found" et que nous avons copié avec succès notre clé SSH sur le serveur distant, vérifions que l'authentification par clé SSH fonctionne correctement.
Tester l'authentification par clé SSH
Dans un environnement réel, vous testeriez l'authentification par clé SSH en vous connectant au serveur distant :
ssh username@remote_host
Si votre clé SSH est correctement configurée, vous devriez pouvoir vous connecter sans entrer de mot de passe (à moins que vous n'ayez défini une phrase de passe pour votre clé, auquel cas vous devrez l'entrer).
Pour notre environnement de laboratoire, nous pouvons tester en essayant de nous connecter en SSH à localhost :
ssh labex@localhost
Si vous obtenez une invite vous demandant de confirmer la connexion (parce que localhost n'est pas dans votre fichier known_hosts), tapez yes.
Vous pourriez voir un message comme :
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Si on vous demande un mot de passe, cela signifie que l'authentification par clé SSH ne fonctionne pas encore. Mais si vous vous connectez avec succès sans entrer de mot de passe, votre authentification par clé SSH fonctionne correctement.
Problèmes courants et solutions pour l'authentification par clé SSH
Si vous rencontrez toujours des problèmes avec l'authentification par clé SSH, voici quelques problèmes courants et leurs solutions :
Configuration du serveur SSH : Le serveur SSH doit être configuré pour autoriser l'authentification par clé publique. Ceci est généralement activé par défaut, mais vous pouvez vérifier en examinant le fichier /etc/ssh/sshd_config sur le serveur distant :
grep PubkeyAuthentication /etc/ssh/sshd_config
Il devrait afficher PubkeyAuthentication yes.
Propriété des fichiers : Votre répertoire personnel et votre répertoire .ssh doivent vous appartenir :
ls -ld ~ ~/.ssh
Les deux devraient afficher votre nom d'utilisateur comme propriétaire.
Déboguer la connexion SSH : Vous pouvez utiliser l'option verbose (verbeux) pour déboguer les connexions SSH :
ssh -v labex@localhost
Cela affichera des informations détaillées sur le processus d'authentification, ce qui peut aider à identifier le problème.
Bonnes pratiques pour la gestion des clés SSH
Voici quelques bonnes pratiques pour la gestion des clés SSH :
Utiliser une phrase de passe : Lors de la génération de votre clé SSH, envisagez d'utiliser une phrase de passe pour plus de sécurité.
Différentes clés pour différents serveurs : Pour une sécurité accrue, envisagez d'utiliser différentes clés pour différents serveurs ou usages.
Sauvegarder vos clés : Conservez des sauvegardes de vos clés SSH dans un endroit sûr.
Rotation régulière des clés : Pour les environnements sensibles, envisagez de faire tourner vos clés SSH périodiquement.
En suivant ces étapes et ces bonnes pratiques, vous pouvez vous assurer que l'authentification par clé SSH fonctionne de manière fiable et sécurisée.
Résumé
Dans ce labo, vous avez appris à dépanner et à résoudre l'erreur "no identities found" lors de l'utilisation de la commande SSH copy-id. Nous avons couvert :
La compréhension de l'authentification par clé SSH et du fonctionnement de la commande ssh-copy-id
La génération de paires de clés SSH avec la commande ssh-keygen
La vérification et la correction des permissions des clés SSH
L'utilisation correcte de ssh-copy-id pour copier votre clé publique sur un serveur distant
Le test et la vérification de l'authentification par clé SSH
Les problèmes courants et les meilleures pratiques pour la gestion des clés SSH
Grâce à ces compétences, vous pouvez désormais configurer des connexions SSH sécurisées et sans mot de passe entre les systèmes, ce qui est essentiel pour une administration système et une automatisation efficaces. L'authentification par clé SSH offre non seulement une meilleure sécurité que l'authentification par mot de passe, mais simplifie également le processus de connexion pour les utilisateurs légitimes.
N'oubliez pas qu'il est essentiel de sécuriser correctement vos clés SSH, car elles donnent un accès direct à vos systèmes. Gardez toujours vos clés privées en sécurité et envisagez d'utiliser des phrases de passe pour une protection supplémentaire.