SSH Public Key Format

11

Ich habe einen öffentlichen Schlüssel im Format:

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "somename-20060227"
AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]==

---- END SSH2 PUBLIC KEY ----

Normalerweise sehe ich Schlüssel in folgendem Format:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAqof[and so on]

Kann ich einfach den ersten Schlüssel in die Datei authorized_keys kopieren oder muss ich ihn irgendwie ändern, damit er wie der zweite aussieht? Ich denke, der erste wurde von PUTTYgen generiert, während der zweite von ssh-keygen generiert wurde.

Hans
quelle

Antworten:

16

Verwenden Sie ssh-keygen -idiese Option, um das SSH2-kompatible Format in das OpenSSH-kompatible Format zu konvertieren.

von man ssh-keygen:

-i Diese Option liest eine unverschlüsselte private (oder öffentliche) Schlüsseldatei im SSH2-kompatiblen Format und druckt einen OpenSSH-kompatiblen privaten (oder öffentlichen) Schlüssel an stdout. ssh-keygen liest auch das RFC 4716 SSH Public Key-Dateiformat. Diese Option ermöglicht den Import von Schlüsseln aus mehreren kommerziellen SSH-Implementierungen.

Alexus
quelle
4

Sie müssen den öffentlichen Schlüssel in die openssh-Konvention konvertieren:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]== somename-20060227

Stellen Sie außerdem sicher, dass der Schlüssel genau eine Zeile belegt und beim Kopieren keine Zeilenumbrüche eingeführt wurden.

Dmitri Chubarov
quelle
4

Dies ist die vollständige, richtige Antwort:

ssh-keygen -i -m PKCS8 -f public-key.pem

Boeboe
quelle
1
"RFC4716" ist das Standard-Schlüsselformat, und -m scheint für die Angabe des Formats der EINGABE in dieser Instanz und nicht der Ausgabe zu dienen, sodass Sie korrekt sind.
JimNim
Technisch gesehen ist die "richtige" Antwort von alexus jedoch NICHT falsch, da diese Antwort keine vollständige Syntax enthält - sondern nur darauf hinweist, welches primäre Flag verwendet werden soll, sodass die Syntax / Verwendung von -i in der Manpage überprüft werden muss.
JimNim
2

Schreiben Sie einfach Ihren Schlüssel in einem Format um, das für Folgendes geeignet ist authorized_keys:

Schlüsseltyp Schlüsselkörper Keyname

Beachten Sie, dass nachgestellte "==" Platzhalter erforderlich sind, um die Schlüssellänge auf der gewünschten Länge zu halten.

Kondybas
quelle
4
Die nachfolgenden "==" sind Base64-Polster
Andrew
Woher weiß ich, ob es RSA oder DSA ist?
Hans