web-dev-qa-db-fra.com

Comment récupérer la clé publique d'une clé privée SSH?

Une clé privée SSH telle que générée par ssh-keygen contient une partie de clé publique. Comment puis-je récupérer cette clé publique à partir de la clé privée? J'ai perdu ma clé publique et je dois mettre le contenu de cette clé publique dans le fichier authorized_keys server et je ne souhaite pas créer de nouvelle paire de clés.

Autrement dit: comment créer le fichier id_rsa.pub à partir d'un fichier id_rsa?

418
Lekensteyn

J'ai trouvé la réponse sur Server Fault: créer une clé publique SSH à partir de la clé privée?

L'option -y renvoie la clé publique:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

En remarque, le commentaire de la clé publique est perdu. J'ai eu un site qui nécessitait le commentaire (Launchpad?), Vous devez donc éditer ~/.ssh/id_rsa.pub et ajouter un commentaire à la première ligne avec un espace entre le commentaire et les données clés. Un exemple de clé publique est tronqué ci-dessous.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

Pour les clés ajoutées à l'agent SSH (programme exécuté en arrière-plan et évitant de ressaisir la phrase secrète du fichier de clés encore et encore), vous pouvez utiliser la commande ssh-add -L pour répertorier les clés publiques des clés ajoutées. à l'agent (via ssh-add -l). Ceci est utile lorsque la clé SSH est stockée sur une carte à puce (et que l'accès au fichier de clé privée n'est pas possible).

649
Lekensteyn

Il s'agit d'une solution spécialement conçue pour les utilisateurs utilisant Windows vers SSH dans leurs ordinateurs distants, y compris les images en nuage sur Amazon AWS et GCE.

(Avertissement)

J'ai récemment utilisé cette solution pour vous connecter à distance à de nouvelles images VM déployées sur GCE.


Les outils utilisés:

  1. puttygen
  2. WinSCP

Étapes à suivre:

  1. Générez une paire de clés publique/privée à l'aide de puttygen.
  2. Téléchargez une clé publique sur votre serveur dans le cloud ou à un emplacement distant.

Description (comment le faire):

  1. Générez une clé/paire ou utilisez une clé privée existante:

    Si vous avez une clé privée:

    Ouvrez puttygen, appuyez sur le bouton de chargement et sélectionnez votre fichier de clé privée (* .pem).

    Si vous n'avez pas de clé privée:

    • Ouvrez mastic,
    • Sélectionnez le type de clé SSH2 DSA souhaité (vous pouvez utiliser RSA ou DSA) dans la section Paramètres ... et il est important de laisser le champ phrase secrète vide.
    • Appuyez sur Générer et suivez les instructions pour générer une paire de clés (publique/privée).

    Sample Key Generation pic

  2. Créez un nouveau fichier 'allowed_keys' (avec le Bloc-notes):

    Copiez vos données de clé publique à partir de la section "Clé publique pour le collage dans le fichier OpenSSH allowed_keys" du générateur de clé PuTTY, puis collez les données de clé dans le fichier "authorised_keys".

    Assurez-vous qu'il n'y a qu'une seule ligne de texte dans ce fichier.

  3. Téléchargez la clé sur un serveur Linux:

    • Ouvrez WinSCP,
    • Sélectionnez le protocole de fichier SFTP et connectez-vous avec vos informations d'identification SSH.
    • En cas de succès, vous voyez la structure du répertoire de base sur votre ordinateur distant.

    Téléchargez le fichier allowed_keys dans le répertoire de base de la machine distante.

  4. Définissez les autorisations appropriées:

    Créez un répertoire .ssh (s'il n'existe pas)

    Copiez le fichier authorized_keys dans le répertoire .ssh (cela remplacera tout fichier authorized_keys existant; prenez-en note).

    Si le fichier existe, ajoutez simplement le contenu de ce fichier au fichier existant.

    Exécutez des commandes pour définir des autorisations:

    Sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Maintenant, vous pourrez ssh sur une machine distante sans entrer les identifiants à chaque fois.

Lectures complémentaires:

  1. Génération et téléchargement de clés SSH sous Windows

  2. authentification sans mot de passe avec OpenSSH Key, certificats .pem et .pub

13
devprashant