Comment résoudre l'erreur 'No Identities Found' de SSH Copy-ID

LinuxBeginner
Pratiquer maintenant

Introduction

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 :

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Cette commande :

  • -t rsa spécifie le type de clé à créer (RSA)
  • -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é à :

  1. Entrer un emplacement de fichier pour enregistrer la clé (appuyez sur Entrée pour utiliser l'emplacement par défaut ~/.ssh/id_rsa)
  2. 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 :

total 20
drwx------ 2 labex labex 4096 Sep 15 10:10 .
drwxr-xr-x 5 labex labex 4096 Sep 15 09:55 ..
-rw------- 1 labex labex 3389 Sep 15 10:10 id_rsa
-rw-r--r-- 1 labex labex  746 Sep 15 10:10 id_rsa.pub
-rw-r--r-- 1 labex labex  444 Sep 15 10:00 known_hosts

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 :

  1. Les clés SSH n'existent pas
  2. Les clés SSH ne se trouvent pas à l'emplacement par défaut
  3. Les clés SSH ont des permissions incorrectes
  4. 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 :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Utiliser ssh-copy-id correctement

Essayons maintenant d'utiliser la commande ssh-copy-id correctement. La syntaxe correcte est :

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host

Où :

  • -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.

Retrieve Password

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 :

  1. 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.

  2. 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.

  3. 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 :

  1. 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é.
  2. 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.
  3. Sauvegarder vos clés : Conservez des sauvegardes de vos clés SSH dans un endroit sûr.
  4. 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 :

  1. La compréhension de l'authentification par clé SSH et du fonctionnement de la commande ssh-copy-id
  2. La génération de paires de clés SSH avec la commande ssh-keygen
  3. La vérification et la correction des permissions des clés SSH
  4. L'utilisation correcte de ssh-copy-id pour copier votre clé publique sur un serveur distant
  5. Le test et la vérification de l'authentification par clé SSH
  6. 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.