Question Comment puis-je récupérer la clé publique à partir d'une clé privée SSH?


Une clé privée SSH générée par ssh-keygen contient une partie 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 les serveurs authorized_keys fichier et ne veulent pas créer une nouvelle paire de clés.

Sinon, comment est-ce que je crée le id_rsa.pub fichier d'un id_rsa fichier?


369
2017-07-18 09:57


origine


pbcopy > ~/.ssh/id_rsa.pub Oops. - Nick T
@NickT - pbcopy est une commande MacOSX. De plus, il est inutile si vous avez redémarré, déconnecté ou copié toute autre chose dans le Presse-papiers. - jsnfwlr


Réponses:


J'ai trouvé la réponse sur l'erreur de serveur: Créer une clé SSH publique à partir de la clé privée?

L'option -y génère la clé publique:

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

En guise de remarque, le commentaire de la clé publique est perdu. J'ai eu un site qui nécessitait le commentaire (Launchpad?), Donc vous devez é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 qui ont été ajoutées à l'agent SSH (un programme qui s'exécute en arrière-plan et qui évite de ressaisir la phrase secrète du fichier de clés), vous pouvez utiliser le programme. ssh-add -L commande 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 est impossible).


574
2017-07-18 10:12



tu as fait un morceau de gâteau. Merci - bragboy
Veuillez noter que votre fichier de clé privée ~/.ssh/id_rsa doit être limité à votre nom d'utilisateur. utilisation $ sudo chmod 600 ~/.ssh/id_rsa et entrez vos informations d'identification racine pour le restreindre, puis vous pouvez générer le fichier de clé publique. Sinon, vous obtiendrez un avertissement illimité de fichier de clé privée. - Mark Mikofski
@MarkMikofski Pas besoin de sudo, vous êtes censé posséder déjà la clé privée. Sinon, vous ne pouvez pas le lire en premier lieu. - Lekensteyn
@Lekensteyn merci bien sûr que vous avez raison !. Aussi 400 est recommandé car il n'est pas nécessaire d'écrire pour taper le fichier de clé privée. La commande corrigée devrait être $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
Le commentaire de clé privée est perdu. Voir stackoverflow.com/questions/38290929/… - weberjn


Cette solution est spécifiquement destinée aux utilisateurs de Windows à SSH dans leurs machines distantes, y compris les images en nuage sur Amazon AWS et GCE.

(Avertissement)

J'ai récemment utilisé cette solution pour me connecter à distance aux nouvelles images de 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 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 tu fais ne pas avoir une clé privée:

    • Open puttygen,
    • Sélectionnez le type de clé souhaité SSH2 DSA (vous pouvez utiliser RSA ou DSA) dans la section Paramètres ... et il est important de laisser le champ de 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 'authorized_keys' (avec le Bloc-notes):

    Copiez vos données de clé publique à partir de la section "Clé publique à coller dans le fichier OpenSSH authorized_keys" du générateur de clés PuTTY et collez les données de clé dans le fichier "authorized_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 authorized_keys dans le répertoire personnel de la machine distante.

  4. Définir les autorisations appropriées:

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

    Copiez le authorized_keysfichier dans le répertoire .ssh (cela remplacera tout fichier existant). authorized_keys fichier; prenez note de ceci).

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

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

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

Maintenant, vous serez en mesure de ssh dans une machine distante sans saisir les informations d'identification à 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


12
2017-11-20 06:18



Si votre répertoire personnel est crypté, procédez comme suit: askubuntu.com/questions/439184/… - devprashant
Bien que votre réponse ne soit pas vraiment pertinente par rapport à la question, je vote pour cela en raison de votre enthousiasme. - Truong Nguyen