Frage Wie kann ich den öffentlichen Schlüssel von einem privaten SSH-Schlüssel abrufen?


Ein privater SSH-Schlüssel, wie er von ssh-keygen enthält einen öffentlichen Schlüsselteil. Wie kann ich diesen öffentlichen Schlüssel vom privaten Schlüssel abrufen? Ich habe meinen öffentlichen Schlüssel verloren und muss den Inhalt dieses öffentlichen Schlüssels in die Server einfügen authorized_keys Datei und möchte kein neues Schlüsselpaar erstellen.

Alternativ formuliert: Wie erstelle ich das id_rsa.pub Datei von a id_rsa Datei?


369
2017-07-18 09:57


Ursprung


pbcopy > ~/.ssh/id_rsa.pub Hoppla. - Nick T
@NickT - pbcopy ist ein MacOSX-Befehl. Außerdem ist es nutzlos, wenn Sie neu gestartet, ausgeloggt oder irgendetwas anderes in die Zwischenablage kopiert haben. - jsnfwlr


Antworten:


Ich habe die Antwort auf Serverfehler gefunden: Erstellen Sie einen öffentlichen SSH-Schlüssel aus dem privaten Schlüssel?

Die Option -y gibt den öffentlichen Schlüssel aus:

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

Als Randnotiz ist der Kommentar des öffentlichen Schlüssels verloren. Ich hatte eine Website, die den Kommentar benötigt (Launchpad?), Also müssen Sie bearbeiten ~/.ssh/id_rsa.pub und fügen Sie einen Kommentar an die erste Zeile mit einem Leerzeichen zwischen den Kommentar- und Schlüsseldaten an. Ein öffentlicher Beispielschlüssel wird unten abgeschnitten angezeigt.

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

Bei Schlüsseln, die dem SSH-Agenten hinzugefügt wurden (ein Programm, das im Hintergrund ausgeführt wird und die wiederholte Eingabe der Passphrase für die Schlüsseldatei überflüssig macht), können Sie den Befehl verwenden ssh-add -L Befehl zum Auflisten der öffentlichen Schlüssel für Schlüssel, die dem Agenten hinzugefügt wurden (über ssh-add -l). Dies ist nützlich, wenn der SSH-Schlüssel auf einer Smartcard gespeichert ist (und der Zugriff auf die Datei mit dem privaten Schlüssel nicht möglich ist).


574
2017-07-18 10:12



Du hast es Stück Kuchen gemacht. Vielen Dank - bragboy
Bitte beachten Sie, dass Ihre private Schlüsseldatei ~/.ssh/id_rsa muss auf deinen Benutzernamen beschränkt sein. benutzen $ sudo chmod 600 ~/.ssh/id_rsa und geben Sie Ihre root-Anmeldeinformationen ein, um sie zu beschränken. Anschließend können Sie die Datei mit dem öffentlichen Schlüssel ausgeben. Andernfalls erhalten Sie eine uneingeschränkte private Datei Warnung. - Mark Mikofski
@ MarkMikofski Keine Notwendigkeit für sudo, Sie sollten bereits den privaten Schlüssel besitzen. Sonst kann man es gar nicht lesen. - Lekensteyn
@Lekensteyn danke, natürlich hast du recht! Ebenfalls 400 wird empfohlen, da keine Notwendigkeit besteht, in private key-Dateien zu schreiben. Korrigierter Befehl sollte sein $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
Privater Schlüssel Kommentar ist verloren. Sehen stackoverflow.com/questions/38290929/... - weberjn


Dies ist eine Lösung speziell für Benutzer, die Windows auf SSH in ihre Remote-Computer verwenden, einschließlich Cloud-Images auf Amazon AWS und GCE.

(Haftungsausschluss)

Ich habe diese Lösung kürzlich zur Remote-Anmeldung bei neuen bereitgestellten VM-Images in GCE verwendet.


Benutztes Werkzeug:

  1. Puttygen
  2. WinSCP

Schritte zum Ausführen:

  1. Generieren Sie ein öffentliches / privates Schlüsselpaar mithilfe von puttygen.
  2. Laden Sie einen öffentlichen Schlüssel auf Ihren Server in der Cloud oder an einem anderen Standort hoch.

Beschreibung (wie es geht):

  1. Generieren Sie einen Schlüssel / ein Paar oder verwenden Sie einen vorhandenen privaten Schlüssel:

    Wenn Sie einen privaten Schlüssel haben:

    Öffne den Puttygen, drücke den Load Knopf und wähle deine private Schlüssel (* .pem) Datei.

    Wenn Sie tun nicht einen privaten Schlüssel haben:

    • Offener Puttygen,
    • Wählen Sie den gewünschten Schlüsseltyp SSH2 DSA (Sie können RSA oder DSA verwenden) innerhalb der Parameter-Sektion ... und es ist wichtig, dass Sie das Passwort-Feld leer lassen,
    • Klicken Sie auf Generate und folgen Sie den Anweisungen, um ein (öffentliches / privates) Schlüsselpaar zu generieren.

    Sample Key Generation pic

  2. Erstellen Sie eine neue 'authorized_keys' Datei (mit Notepad):

    Kopieren Sie Ihre öffentlichen Schlüsseldaten aus dem Abschnitt "Öffentlicher Schlüssel zum Einfügen in die OpenSSH-Datei authorized_keys" des PuTTY-Schlüsselgenerators und fügen Sie die Schlüsseldaten in die Datei "authorized_keys" ein.

    Stellen Sie sicher, dass sich in dieser Datei nur eine Textzeile befindet.

  3. Laden Sie den Schlüssel auf einen Linux-Server hoch:

    • Öffnen Sie WinSCP,
    • Wählen Sie das SFTP-Dateiprotokoll und melden Sie sich mit Ihren SSH-Zugangsdaten an.
    • Bei Erfolg sehen Sie die Home-Verzeichnisstruktur auf Ihrem Remote-Computer.

    Laden Sie die Datei authorized_keys in das Home-Verzeichnis auf dem Remote-Computer hoch.

  4. Legen Sie die richtigen Berechtigungen fest:

    Mach ein .ssh Verzeichnis (falls es nicht existiert)

    Kopiere das authorized_keysDatei in das Verzeichnis .ssh (dies ersetzt alle vorhandenen authorized_keys Datei; beachten Sie das).

    Wenn die Datei vorhanden ist, fügen Sie einfach den Inhalt dieser Datei zur vorhandenen Datei hinzu.

    Führen Sie Befehle zum Festlegen von Berechtigungen aus:

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

Jetzt können Sie ssh auf einen Remote-Computer zugreifen, ohne jedes Mal Anmeldeinformationen eingeben zu müssen.

Weiterführende Literatur:

  1. Erstellen und Hochladen von SSH-Schlüsseln unter Windows

  2. Authentifizierung ohne Passwort mit OpenSSH Key, Zertifikaten .pem und .pub


12
2017-11-20 06:18



Wenn Ihr Home-Verzeichnis verschlüsselt ist, tun Sie Folgendes: askubuntu.com/questions/439184/ ... - devprashant
Obwohl Ihre Antwort für die Frage nicht relevant ist, stimme ich wegen Ihrer Begeisterung dafür. - Truong Nguyen