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

365

Ein privater SSH-Schlüssel, wie er von ssh-keygen generiert wird, 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 authorized_keys Datei schreiben und möchte kein neues Schlüsselpaar erstellen.

Alternativ formuliert: Wie erstelle ich die id_rsa.pub Datei aus einer id_rsa Datei?

    
Lekensteyn 18.07.2011, 11:57

2 Antworten

561

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 gegangen. Ich hatte eine Website, die den Kommentar benötigt (Launchpad?), Also müssen Sie ~/.ssh/id_rsa.pub bearbeiten und einen Kommentar an die erste Zeile mit einem Leerzeichen zwischen den Kommentar- und Schlüsseldaten anhängen. Ein öffentlicher Beispielschlüssel wird unten abgeschnitten.

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 mit dem Befehl ssh-add -L die öffentlichen Schlüssel auflisten 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).

    
Lekensteyn 18.07.2011, 12:12
12

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

(Haftungsausschluss)

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

Verwendete Werkzeuge:

  1. puttygen
  2. WinSCP

Durchzuführende Schritte:

  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 Ort 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:

    Öffnen Sie puttygen, drücken Sie die Lade-Taste und wählen Sie Ihre private Schlüssel (* .pem) Datei.

    Wenn Sie nicht haben, haben Sie einen privaten Schlüssel:

    • Öffne Puttygen,
    • Wählen Sie den gewünschten Schlüsseltyp SSH2 DSA (Sie können RSA oder DSA verwenden) innerhalb des Parameters-Bereichs ... und es ist wichtig, dass Sie das Passphrasefeld leer lassen,
    • Drücken Sie Generate und folgen Sie den Anweisungen, um ein (öffentliches / privates) Schlüsselpaar zu generieren.

  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-Rechner.

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

  4. Legen Sie die richtigen Berechtigungen fest:

    Erstellen Sie ein Verzeichnis .ssh (falls es nicht existiert)

    Kopieren Sie die Datei authorized_keys in das Verzeichnis .ssh (dies ersetzt jede vorhandene authorized_keys -Datei; beachten Sie dies).

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

    Ausführen von Befehlen zum Festlegen von Berechtigungen:

    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 Schlüssel, Zertifikate .pem und .pub

devprashant 20.11.2015 07:18

Tags und Links