530 votes

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 j'ai besoin de placer le contenu de cette clé publique dans les serveurs. authorized_keys et ne veulent pas créer une nouvelle paire de clés.

En d'autres termes, comment créer l'image de marque de l'entreprise ? id_rsa.pub à partir d'un fichier id_rsa fichier ?

1 votes

pbcopy > ~/.ssh/id_rsa.pub Oups.

1 votes

@NickT - pbcopy est une commande MacOSX. De plus, elle est inutile si vous avez redémarré, déconnecté ou copié autre chose dans le presse-papiers.

814voto

Lekensteyn Points 162346

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

El option -y sort la clé publique :

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

Par ailleurs, le commentaire de la clé publique est perdu. J'ai eu un site qui nécessitait le commentaire (Launchpad ?), donc vous devez modifier ~/.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 présenté ci-dessous sous forme tronquée.

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 évite d'avoir à saisir la phrase de passe du fichier de clé à plusieurs reprises), vous pouvez utiliser la commande ssh-add -L pour lister les clés publiques des clés qui ont été ajoutées à l'agent (via la commande 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 la clé privée est impossible).

3 votes

Veuillez noter que votre fichier de clé privée ~/.ssh/id_rsa doit être limité à votre nom d'utilisateur. $ sudo chmod 600 ~/.ssh/id_rsa et entrez vos informations d'identification root pour le restreindre, puis vous pouvez sortir le fichier de la clé publique. Sinon, vous obtiendrez un avertissement concernant le fichier de la clé privée non restreinte.

15 votes

@MarkMikofski Pas besoin de sudo vous êtes censé posséder déjà la clé privée. Sinon, vous ne pouvez pas la lire en premier lieu.

9 votes

@Lekensteyn merci, bien sûr que vous avez raison !. Aussi 400 est recommandé car il n'est pas nécessaire d'écrire dans le fichier des clés privées. La commande corrigée devrait être $ chmod 400 ~/.ssh/id_rsa

15voto

devprashant Points 374

Il s'agit d'une solution spécifiquement destinée aux utilisateurs qui utilisent Windows pour se connecter en SSH à leurs machines distantes, y compris les images en nuage sur Amazon AWS et GCE.

(Disclaimer)

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


Outils utilisés :

  1. puttygen
  2. WinSCP

Étapes à réaliser :

  1. Générer une paire de clés publiques/privées en utilisant puttygen.
  2. Téléchargez une clé publique sur votre serveur dans le nuage ou à distance.

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 load et sélectionnez votre fichier de clé privée (*.pem).

    Si vous le faites pas ont une clé privée :

    • Ouvrez 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 la phrase de passe vide,
    • Appuyez sur generate et suivez les instructions pour générer une paire de clés (publiques/privées).

    Sample Key Generation pic

  2. Créez un nouveau fichier 'authorized_keys' (avec Notepad) :

    Copiez les données de votre clé publique depuis la section "Clé publique à coller dans le fichier authorized_keys d'OpenSSH" du générateur de clé PuTTY, et collez les données de la 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 personnel de votre machine distante.

    Téléchargez le fichier authorized_keys dans le répertoire personnel de la machine distante.

  4. Définissez les autorisations appropriées :

    Faites un .ssh (s'il n'existe pas)

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

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

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

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

Vous pourrez désormais vous connecter à une machine distante sans avoir à saisir vos informations d'identification à chaque fois.

Pour en savoir plus :

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

  2. Authentification sans mot de passe en utilisant la clé OpenSSH, les certificats .pem et .pub

0 votes

Si votre répertoire personnel est crypté, faites ceci : askubuntu.com/questions/439184/

3 votes

Bien que votre réponse ne soit pas vraiment pertinente par rapport à la question, je vote pour elle en raison de votre enthousiasme.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X