Vraag Hoe haal ik de openbare sleutel op van een privésleutel van SSH?


Een persoonlijke SSH-sleutel zoals gegenereerd door ssh-keygen bevat een openbare sleutel. Hoe haal ik deze openbare sleutel uit de privésleutel? Ik ben mijn openbare sleutel kwijt en moet de inhoud van deze publieke sleutel in de servers plaatsen authorized_keys bestand en willen geen nieuw sleutelpaar maken.

Anders geformuleerd: hoe maak ik het id_rsa.pub bestand van een id_rsa het dossier?


369
2017-07-18 09:57


oorsprong


pbcopy > ~/.ssh/id_rsa.pub oops. - Nick T
@NickT - pbcopy is een MacOSX-opdracht. Bovendien is het nutteloos als u opnieuw opgestart, uitgelogd of iets anders naar het klembord gekopieerd hebt. - jsnfwlr


antwoorden:


Ik heb het antwoord gevonden op Server Fault: Maak een openbare SSH-sleutel van de privésleutel?

De optie -y geeft de openbare sleutel uit:

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

Als een kanttekening is de opmerking van de publieke sleutel verloren. Ik heb een site gehad waarvoor de opmerking nodig was (Launchpad?), Dus je moet deze bewerken ~/.ssh/id_rsa.pub en voeg een opmerking toe aan de eerste regel met een spatie tussen de opmerking en de belangrijkste gegevens. Een voorbeeld van een openbare sleutel wordt hieronder afgeknipt weergegeven.

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

Voor sleutels die aan de SSH-agent zijn toegevoegd (een programma dat op de achtergrond wordt uitgevoerd en de noodzaak om de keyfile-wachtzin steeds opnieuw opnieuw in te voeren) te voorkomen, kunt u de ssh-add -L commando om de openbare sleutels weer te geven voor sleutels die aan de agent zijn toegevoegd (via ssh-add -l). Dit is handig als de SSH-sleutel op een smartcard is opgeslagen (en toegang tot het privésleutelbestand niet mogelijk is).


574
2017-07-18 10:12



je hebt het een fluitje van een cent gemaakt. bedankt - bragboy
Houd er rekening mee dat uw privésleutelbestand ~/.ssh/id_rsa moet worden beperkt tot uw gebruikersnaam. gebruik $ sudo chmod 600 ~/.ssh/id_rsa en voer je rootreferenties in om het te beperken, dan kun je het bestand met de publieke sleutel uitvoeren. Anders krijg je een onbeperkte melding van een privésleutelbestand. - Mark Mikofski
@MarkMikofski Geen behoefte aan sudo, je zou de privésleutel al moeten bezitten. Anders kun je het niet in de eerste plaats lezen. - Lekensteyn
@Lekensteyn bedankt, natuurlijk heb je gelijk !. Ook 400 wordt aanbevolen omdat u niet hoeft te schrijven om het persoonlijke sleutelbestand te typen. De gecorrigeerde opdracht zou moeten zijn $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
Eigen sleutelcommentaar is verloren. Zien stackoverflow.com/questions/38290929/... - weberjn


Dit is een oplossing die specifiek bedoeld is voor gebruikers die Windows naar SSH gebruiken op hun externe machines, inclusief cloudbeelden op Amazon AWS en GCE.

(Disclaimer)

Ik heb deze oplossing onlangs gebruikt voor extern inloggen bij nieuwe geïmplementeerde VM-afbeeldingen op GCE.


Gebruikte tools:

  1. PuTTYgen
  2. WinSCP

Uit te voeren stappen:

  1. Genereer een publiek / privaat sleutelpaar met behulp van puttygen.
  2. Upload een openbare sleutel naar uw server in de cloud of op een externe locatie.

Beschrijving (hoe het te doen):

  1. Genereer een sleutel / paar of gebruik een bestaande privésleutel:

    Als u een privésleutel hebt:

    Open puttygen, druk op de knop Laden en selecteer uw privésleutelbestand (* .pem).

    Als je dat doet niet een privésleutel hebben:

    • Open puttygen,
    • Selecteer het gewenste sleuteltype SSH2 DSA (u kunt RSA of DSA gebruiken) in de sectie Parameters ... en het is belangrijk dat u het wachtwoordzinveld leeg laat,
    • Druk op genereren en volg de instructies om (openbaar / privé) sleutelpaar te genereren.

    Sample Key Generation pic

  2. Maak een nieuw 'authorized_keys'-bestand (met Kladblok):

    Kopieer uw openbare sleutelgegevens uit de sectie 'Public key voor plakken in OpenSSH authorized_keys file' van de PuTTY Key Generator en plak de sleutelgegevens in het bestand 'authorized_keys'.

    Zorg ervoor dat er slechts één regel tekst in dit bestand staat.

  3. Upload de sleutel naar een Linux-server:

    • Open WinSCP,
    • Selecteer het SFTP-bestandsprotocol en log in met uw SSH-inloggegevens.
    • Bij succes ziet u de hoofddirectorystructuur op uw externe computer.

    Upload authorized_keys bestand naar de thuismap op het externe apparaat.

  4. Stel de juiste machtigingen in:

    Maak een .ssh directory (als deze niet bestaat)

    Kopieer de authorized_keysbestand naar de map .ssh (dit zal alle bestaande vervangen authorized_keys het dossier; noteer dit).

    Als het bestand bestaat, voegt u gewoon de inhoud van dit bestand toe aan het bestaande bestand.

    Voer opdrachten uit om machtigingen in te stellen:

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

Nu kunt u in een externe machine sshrpen zonder telkens inloggegevens in te voeren.

Verder lezen:

  1. SSH-sleutels genereren en uploaden onder Windows

  2. Authenticatie zonder wachtwoord met OpenSSH Key, certificaten .pem en .pub


12
2017-11-20 06:18



Als uw home-map is gecodytiseerd, doet u het volgende: askubuntu.com/questions/439184/... - devprashant
hoewel je antwoord niet echt relevant is voor de vraag, stem ik ervoor vanwege je enthousiasme. - Truong Nguyen