Scroll to navigation

SSH-KEYGEN(1) General Commands Manual SSH-KEYGEN(1)

BEZEICHNUNG

ssh-keygen
Dienstewerkzeug für OpenSSH-Authentifizierungsschlüssel

ÜBERSICHT

ssh-keygen [-q] [-a Runden] [-b Bits] [-C Kommentar] [-f Ausgabe-Schlüsseldatei] [-m Format] [-N neue_Passphrase] [-O Option] [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-N neue_Passphrase] [-O Option] [-w Anbieter] ssh-keygen -p [-a Runden] [-f Schlüsseldatei] [-m Format] [-N neue_Passphrase] [-P alte_Passphrase] ssh-keygen -i [-f Eingabe-Schlüsseldatei] [-m Schlüsselformat] ssh-keygen -e [-f Eingabe-Schlüsseldatei] [-m Schlüsselformat] ssh-keygen -y [-f Eingabe-Schlüsseldatei] ssh-keygen -c [-a Runden] [-C Kommentar] [-f Schlüsseldatei] [-P Passphrase] ssh-keygen -l [-v] [-E Fingerabdruck-Hash] [-f Eingabe-Schlüsseldatei] ssh-keygen -B [-f Eingabe-Schlüsseldatei] ssh-keygen -D pkcs11 ssh-keygen -F Rechnername [-lv] [-f known_hosts-Datei] ssh-keygen -H [-f known_hosts-Datei] ssh-keygen -K [-a Runden] [-w Anbieter] ssh-keygen -R Rechnername [-f known_hosts-Datei] ssh-keygen -r Rechnername [-g] [-f Eingabe-Schlüsseldatei] ssh-keygen -M generate [-O Option] Ausgabedatei ssh-keygen -M Bildschirm [-f Eingabedatei] [-O Option] Ausgabedatei ssh-keygen -I Zertifikatsidentität -s CA-Schlüssel [-hU] [-D pkcs11-Anbieter] [-n Prinzipale] [-O Option] [-V Gültigkeitsintervall] [-z Seriennummer] file ... ssh-keygen -L [-f Eingabe-Schlüsseldatei] ssh-keygen -A [-a Runden] [-f Präfixpfad] ssh-keygen -k -f KRL-Datei [-u] [-s CA-öffentlich] [-z Versionsnummer] file ... ssh-keygen -Q [-l] -f KRL-Datei file ... ssh-keygen -Y find-principals -s Signaturdatei -f erlaubte_Signierer-Datei ssh-keygen -Y check-novalidate -n Namensraum -s Signaturdatei ssh-keygen -Y sign -f Schlüsseldatei -n Namensraum file ... ssh-keygen -Y verify -f erlaubte_Signierer-Datei -I Signierer-Identität -n Namensraum -s Signaturdatei [-r Sperrdatei]

BESCHREIBUNG

ssh-keygen erstellt, verwaltet und wandelt Authentifizierungsschlüssel für ssh(1) um. ssh-keygen kann Schlüssel für den Einsatz von SSH Protokollversion 2 erstellen.

Der Typ des zu erstellenden Schlüssels wird mit der Option -t angegeben. Falls ssh-keygen ohne Argumente aufgerufen wird, erstellt es einen RSA-Schlüssel.

ssh-keygen wird auch zur Erstellung von Gruppen zum Einsatz im Diffie-Hellman-Gruppenaustausch (DH-GEX) verwandt. Siehe den Abschnitt MODULI-ERSTELLUNG für Details.

Schließlich kann ssh-keygen zur Erstellung und Aktualisierung von Schlüsselsperrlisten verwandt werden und prüfen, ob Schlüssel durch eine solche gesperrt wurden. Siehe den Abschnitt SCHLÜSSELSPERRLISTEN für Details.

Normalerweise führt jeder Benutzer, der SSH mit asymmetrischer Schlüsselauthentifizierung verwenden möchte, dieses einmal aus, um Authentifizierungsschlüssel in ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk oder ~/.ssh/id_rsa zu erstellen. Zusätzlich kann der Systemadministrator dies verwenden, um Rechnerschlüssel zu erstellen.

Normalerweise erstellt dieses Programm einen Schlüssel und fragt nach einer Datei, in der der private Schlüssel gespeichert werden soll. Der öffentliche Schlüssel wird in einer Datei mit dem gleichen Namen, aber angehängtem »pub« gespeichert. Das Programm fragt auch nach einer Passphrase. Die Passphrase darf leer sein, um anzuzeigen, dass keine Passphrase verwandt werden soll (Rechnerschlüssel müssen eine leere Passphrase haben) oder sie kann eine Zeichenkette beliebiger Länge sein. Eine Passphrase ist ähnlich einem Passwort, sie kann allerdings eine Phrase mit einer Reihe von Wörtern, Interpunktionszeichen, Zahlen, Leerraum oder jeder von Ihnen gewünschten Zeichenkette enthalten. Gute Passphrasen sind 10-30 Zeichen lang, keine einfachen Sätze oder anderweitig leicht erratbar (englische Ausdrücke haben nur 1-2 Bit an Entropie pro Zeichen und stellen sehr schlechte Passphrasen dar) und enthalten eine Mischung von Groß- und Kleinbuchstaben, Zahlen und nichtalphabetischen Zeichen. Die Passphrase kann später mit der Option -p geändert werden.

Es gibt keine Möglichkeit, eine verlorene Phassphrase wiederzuerlangen. Falls die Passphrase verloren ist oder vergessen wurde, muss ein neuer Schlüssel erstellt und der entsprechende öffentliche Schlüssel auf andere Maschinen kopiert werden.

Standardmäßig wird ssh-keygen Schlüssel in einem OpenSSH-spezifischen Format schreiben. Dieses Format wird bevorzugt, da es besseren Schutz für abgelegte Schlüssel erlaubt sowie ermöglicht, dass Schlüsselkommentare innerhalb der privaten Schlüsseldatei selbst abgespeichert werden. Der Schlüsselkommentar ist zur Identifizierung des Schlüssels nützlich. Der Kommentar wird bei der Erstellung des Schlüssel auf »Benutzer@Rechner« initialisiert, kann aber später mit der Option -c geändert werden.

ssh-keygen kann weiterhin noch private Schlüssel im dem vorher verwandten PEM-Format mittels des Schalters -m schreiben. Dies kann bei der Erstellung neuer Schlüssel und bei der Umwandlung von Schlüsseln im Zusammenspiel mit dem Schalter -p (neue Passphrase) verwandt werden.

Nachdem der Schlüssel erstellt wurde, wird ssh-keygen fragen, wo die Schlüssel zur Aktivierung abgelegt werden sollen.

Folgende Optionen stehen zur Verfügung:

Für jeden der Schlüsseltypen (RSA, DSA, ECDSA und ED25519), für die kein Rechner-Schlüssel existiert, wird ein Rechnerschlüssel mit dem Standard-Schlüsseldatei-Pfad, einer leeren Passphrase, den Vorgabe-Bits für den Schlüssel-Typ und dem Standardkommentar erstellt. Falls auch -f angegeben wurde, wird dessen Argument als Präfix für den Vorgabepfad für die entstehende Rechner-Schlüsseldatei verwandt. Dies wird von Systemadministratorskripten zur Erstellung neuer Rechnerschlüssel verwandt.
Runden
Beim Speichern eines privaten Schlüssels gibt diese Option die Anzahl der verwandten Runden der KDF (Schlüsselableitungsfunktionen) an. Eine höhere Anzahl führt zu einer langsameren Passphrasenbestätigung und erhöhter Widerstandskraft gegen Knacken von Passwörtern mit roher Rechengewalt (falls die Schlüssel gestohlen werden sollten). Die Vorgabe ist 16 Runden.
Zeigt die Kurzfassung der angegebenen privaten oder öffentlichen Schlüsseldatei im bubblebabble-Format an.
Bits
Gibt die Anzahl der Bits in dem zu erstellenden Schlüssel an. Für RSA-Schlüssel ist die minimale Größe 1024 Bit und die Vorgabe ist 3072 Bit. Im Allgemeinen wird 3072 Bit als ausreichend betrachtet. DSA-Schlüssel müssen genau 1024 Bit lang sein, wie dies in FIPS 186-2 spezifiziert ist. Für ECDSA-Schlüssel bestimmt der Schalter -b die Schlüssellänge durch Auswahl aus einer der drei elliptischen Kurvengrößen: 256, 384 oder 521 Bit. Wird versucht, eine andere als eine dieser drei Bitlängen für ECDSA-Schlüssel anzugeben, so führt dies zu einem Fehlschlag. ECDSA-SK-, Ed25519- und Ed25519-SK-Schlüssel haben eine feste Länge und der Schalter -b wird ignoriert.
Kommentar
Stellt einen neuen Kommentar bereit.
Erbittet die Änderung des Kommentars in den Dateien des öffentlichen und privaten Schlüssels. Das Programm bittet um die Angabe der Datei mit den privaten Schlüsseln, die Angabe der Passphrase (falls der Schlüssel eine hat) und um den neuen Kommentar.
pkcs11
Lädt die von der dynamischen PKCS#11-Bibliothek pkcs11 bereitgestellten öffentlichen Schlüssel herunter. Wird dies zusammen mit -s verwandt, zeigt diese Option an, dass sich in einem PKCS#11-Token ein CA-Schlüssel befindet (siehe den Abschnitt ZERTIFIKATE für Details).
Fingerabdruck-Hash
Gibt den bei der Anzeige von Schlüssel-Fingerabdrücken zu verwendenden Hash-Algorithmus an. Gültige Optionen sind »md5« und »sha256«. Die Vorgabe ist »sha256«.
Diese Option wird eine private und öffentliche OpenSSH-Schlüsseldatei einlesen und auf der Standardausgabe einen öffentlichen Schlüssel in einem der in der Option -m angegebenen Formate ausgeben. Das Vorgabe-Export-Format ist »RFC4716«. Diese Option ermöglicht das Exportieren von OpenSSH-Schlüsseln zur Verwendung in anderen Programmen, einschließlich mehrerer kommerzieller SSH-Implementierungen.
Rechnername | [Rechnername]:Port
Sucht in einer known_hosts -Datei nach dem angegebenen Rechnernamen (mit optionaler Port-Nummer) und zeigt alle Treffer an. Diese Option ist zum Finden von gehashten Rechnernamen oder -adressen nützlich und kann auch im Zusammenspiel mit der Option -H verwandt werden, um gefundene Schlüssel in einem gehashten Format anzuzeigen.
Dateiname
Gibt den Namen der Schlüsseldatei an.
Verwendet bei der Ausgabe von Fingerabdruck-Ressourcen-Datensätzen mittels des Befehls -r das generische DNS-Format.
Hasht eine known_hosts -Datei. Dies ersetzt alle Rechnernamen und Adressen durch gehashten Darstellungen innerhalb der angegebenen Datei; der ursprüngliche Inhalt wird in eine Datei mit der Endung ».old« verschoben. Diese Hashes können von ssh und sshd normal verwandt werden, aber sie legen keine identifizierende Informationen offen, sollte der Inhalt der Datei Dritten zugänglich werden. Diese Option verändert bereits existierende gehashte Rechnernamen nicht und kann daher sicher bei Dateien verwandt werden, die sowohl gehashte als auch nicht gehashte Dateinamen enthalten.
Beim Signieren eines Schlüssels wird ein Rechner- statt ein Benutzerzertifikat erstellt. Bitte lesen Sie den Abschnitt ZERTIFIKATE für Details.
Zertifikatsidentität
Gibt die Identität zum Signieren eines öffentlichen Schlüssels an. Bitte lesen Sie den Abschnitt ZERTIFIKATE für Details.
Diese Option liest eine unverschlüsselte private (oder öffentliche) Schlüsseldatei in dem durch die Option -m angegebenen Format und gibt einen OpenSSH-kompatiblen privaten (oder öffentlichen) Schlüssel auf die Standardausgabe aus. Diese Option erlaubt das Importieren von Schlüsseln aus anderer Software, einschließlich einer Reihe von kommerziellen SSH-Implementierungen. Das Standard-Importformat ist »RFC4716«.
Lädt residente Schlüssel von einem FIDO-Authentifikator herunter. Die Dateien der öffentlichen und privaten Schlüssel werden für jeden heruntergeladenen Schlüssel in das aktuelle Verzeichnis geschrieben. Falls mehrere FIDO-Authentifikatoren verbunden sind, werden die Schlüssel von dem ersten angefassten Authentifikator heruntergeladen.
Erstellt eine KRL-Datei. In diesem Modus wird ssh-keygen eine KRL-Datei an dem Ort erstellen, der mittels des Schalters -f angegeben ist. Diese Datei wird jede Datei oder jedes Zertifikat sperren, das auf der Befehlszeile vorhanden ist. Zu sperrende Schlüssel/Zertifikate können als Datei des öffentlichen Schlüssels oder in einem der in Abschnitt SCHLÜSSELSPERRLISTEN beschriebenen Formate angegeben werden.
Gibt den Inhalt eines oder mehrerer Zertifikate aus.
Zeigt den Fingerabdruck der Datei des angegebenen öffentlichen Schlüssels. Für RSA- und DSA-Schlüssel versucht ssh-keygen, die passende Datei des öffentlichen Schlüssels zu finden und dessen Fingerabdruck auszugeben. Falls dies mit -v kombiniert wird, wird eine künstlerische ASCII-Darstellung des Schlüssels mit dem Fingerabdruck zusammen ausgegeben.
generate
Erstellt Kandidaten-Parameter für Diffie-Hellman-Gruppenaustausch (DH-GEX), die von den ‘diffie-hellman-group-exchange-*’ -Schlüsselaustauschmethoden verwandt werden. Die durch diese Aktion erstellten Zahlen müssen vor der Verwendung weiterverarbeitet werden. Siehe den Abschnitt MODULI ERSTELLUNG für weitere Informationen.
screen
Prüft Kandidatenparameter für den Diffie-Hellman-Gruppenaustausch. Dies akzeptiert eine Liste von Kandidatenzahlen und testet, dass sie sichere (Sophie Germain) Primzahlen mit akzeptierbaren Gruppenerstellern sind. Das Ergebnis dieser Aktion kann zu der Datei /etc/ssh/moduli hinzugefügt werden. Siehe den Abschnitt MODULI ERSTELLUNG für weitere Informationen.
Schlüsselformat
Gibt ein Schlüsselformat zur Schlüsselerstellung, die Konvertierungsoptionen für -i (Import), -e (Export) und die Passphrasenänderungsaktion -p an. Letztere kann zur Umwandlung zwischen den Formaten OpenSSH und PEM für private Schlüssel verwandt werden. Die unterstützten Schlüsselformate sind »RFC4716« (RFC 4716/SSH2 öffentlicher oder privater Schlüssel), »PKCS8« (PKCS8 öffentlicher oder privater Schlüssel) und »PEM« (PEM öffentlicher Schlüssel). Standardmäßig wird OpenSSH neuerstellte private Schlüssel in seinem eigenen Format schreiben, bei der Umwandlung öffentlicher Schlüssel zum Export ist aber das Vorgabeformat »RFC4716«. Wird bei der Erstellung oder Aktualisierung eines unterstützten privaten Schlüsseltyps ein »PEM«-Format gesetzt, dann führt dies dazu, dass der Schlüssel im veralteten PEM-Format für private Schlüssel gespeichert wird.
neue_Passphrase
Stellt eine neue Passphrase bereit.
Prinzipale
Gibt einen oder mehrere Prinzipale (Benutzer oder Rechnernamen) an, die in einem Zertifikat beim Signieren eines Schlüssels enthalten sein sollen. Es können mehrere, durch Kommata getrennte Prinzipale angegeben werden. Bitte lesen Sie den Abschnitt ZERTIFIKATE für Details.
Option
Gibt eine Schlüssel-/Wert-Option an. Diese sind für die Aktion spezifisch, die ssh-keygen ausführen soll.

Beim Signieren von Zertifikaten kann hier eine der im Abschnitt ZERTIFIKATE aufgeführten Optionen angegeben werden.

Bei der Erstellung von Moduli oder der Prüfung kann eine der der im Abschnitt MODULI-ERSTELLUNG aufgeführten Optionen angegeben werden.

Beim Erstellen eines Schlüssels, der sich auf einem FIDO-Authentifikator befinden wird, kann dieser Schalter verwandt werden, um Schlüssel-spezifische Optionen anzugeben. Derzeit werden folgende unterstützt:

Setzt die Standard-FIDO-Anwendungs-/Ursprungszeichenkette (»ssh:«) außer Kraft. Das kann nützlich sein, wenn Rechner- oder Domain-spezifische residente Schlüssel erstellt werden. Die angegebene Anwendungszeichenkette muss mit »ssh:« anfangen.
=Pfad
Gibt einen Pfad zu einer Herausforderungszeichenkette an, die an den FIDO-Token während der Schlüsselerstellung übergeben wird. Die Herausforderungszeichenkette kann als Teil eines Außerbandprotokolls zur Schlüsselregistrierung verwandt werden (standardmäßig wird eine zufällige Herausforderung verwandt).
Gibt das zu verwendende fido(4) -Gerät explizit an, statt die Token-Middleware eines auswählen zu lassen.
Zeigt an, dass der erstellte private Schlüssel keine Berührungsereignisse (Anwesenheit des Benutzers) bei der Erstellung von Signaturen erfordern soll. Beachten Sie, dass sshd(8) standardmäßig solche Signaturen ablehnen wird, außer dies wird mit einer authorized_keys-Option außer Kraft gesetzt.
Zeigt an, dass der Schlüssel auf dem FIDO-Authentifikator selbst gespeichert werden soll. Residente Schlüssel könnten auf FIDO2-Token unterstützt werden und benötigen typischerweise, dass auf dem Token vor der Erstellung eine PIN gesetzt wird. Residente Schlüssel können von dem Token mittels ssh-add(1) heruntergeladen werden.
Ein Benutzername, der einem residenten Schlüssel zugeordnet werden soll und den standardmäßigen Benutzernamen außer Kraft setzt. Die Angabe eines Benutzernamens könnte bei der Erstellung mehrfacher residenter Schlüssel für den gleichen Anwendungsnamen nützlich sein.
Zeigt an, dass dieser private Schlüssel für jede Signatur eine Benutzerüberprüfung benötigen soll. Nicht alle FIDO-Token unterstützen diese Option. Derzeit ist PIN-Authentifizierung die einzige unterstützte Methode, aber in der Zukunft können weitere Methoden unterstützt werden.
=Pfad
Kann zum Zeitpunkt der Schlüsselerstellung verwandt werden, um die von FIDO-Token während der Schlüsselerstellung zurückgelieferten Beglaubigungsdaten aufzuzeichnen. Beachten Sie, dass diese Informationen möglicherweise sensitiv sind. Standardmäßig wird diese Information verworfen.

Die Option -O kann mehrfach angegeben werden.

Passphrase
Stellt die (alte) Passphrase bereit.
Erbittet die Änderung der Passphrase einer Datei eines privaten Schlüssels, statt einen neuen privaten Schlüssel zu erstellen. Das Programm wird nach der Datei, die den privaten Schlüssel enthält, der alten Passphrase und zweimal nach der neuen Passphrase fragen.
Prüft, ob Schlüssel in einer KRL gesperrt wurden. Falls auch die Option -l angegeben wurde, dann werden die Inhalte der KRL ausgegeben.
Bringt ssh-keygen zum Schweigen.
Rechnername | [Rechnername]:Port
Entfernt alle Schlüssel aus einer known_hosts -Datei, die zu dem angegebenen Rechnernamen (mit optionaler Port-Nummer) gehören. Diese Option ist nützlich, um gehashte Rechner zu löschen (siehe weiter oben die Option -H).
Rechnername
Gibt den SSHFP-Fingerabdruck-Ressourcendatensatz namens Rechnername für die angegebene Datei des öffentlichen Schlüssels aus.
CA-Schlüssel
Zertifiziert (signiert) einen öffentlichen Schlüssel mit dem angegebenen CA-Schlüssel. Bitte lesen Sie den Abschnitt ZERTIFIKATE für Details.

Beim Erstellen einer KRL gibt -s einen Pfad zu einer CA-Datei eines öffentlichen Schlüssel an, der zum direkten Sperren von Zertifikaten über die Schlüsselkennung oder Seriennummer verwandt wird. Siehe den Abschnitt SCHLÜSSELSPERRLISTEN für Details.

dsa | | | | |
Gibt den Typ des zu erstellenden Schlüssels an. Die möglichen Werte sind »dsa«, »ecdsa«, »ecdsa-sk«, »ed25519«, »ed25519-sk« und »rsa«.

Dieser Schalter kann auch dazu verwandt werden, um den gewünschten Signaturtyp beim Signieren von Zertifikaten mittels eines RSA-CA-Schlüssels anzugeben. Die verfügbaren RSA-Signaturvarianten sind »ssh-rsa« (SHA1-Signaturen, nicht empfohlen), »rsa-sha2-256« und »rsa-sha2-512« (die Vorgabe).

Wird diese Option in Kombination mit -s verwandt, zeigt sie an, dass sich ein CA-Schlüssel in einem ssh-agent(1) befindet. Siehe den Abschnitt ZERTIFIKATE für weitere Informationen.
Aktualisiert eine KRL. Wird dies zusammen mit -k angegeben, dann werden auf der Befehlszeile aufgeführte Schlüssel zu der bestehenden KRL hinzugefügt, statt dass eine neue KRL erstellt wird.
Gültigkeitsinterval
Gibt ein Gültigkeitsintervall beim Signieren eines Zertifikats an. Ein Gültigkeitsintervall kann aus einer einzelnen Zeit bestehen, die angibt, dass das Zertifikat ab jetzt gültig ist und zu dieser Zeit abläuft. Es kann auch aus zwei durch Doppelpunkte getrennten Zeiten bestehen, die ein explizites Zeitintervall anzeigen.

Die Startzeit kann als die Zeichenkette »always« angegeben werden, um anzuzeigen, dass das Zertifikat keine bestimmte Startzeit hat, als Datum im Format YYYYMMDD, als Zeit im Format YYYYMMDDHHMM[SS], als relative Zeit (bezogen auf die aktuelle Zeit), bestehend aus einem Minuszeichen, gefolgt von einem Intervall in dem in Abschnitt ZEITFORMATE in sshd_config(5) beschriebenen Format.

Die Endzeit kann als ein YYYYMMDD-Datum, eine YYYYMMDDHHMM[SS]-Zeit, eine relative, mit einem Plus-Zeichen beginnende Startzeit oder als die Zeichenkette »forever« angegeben werden, um darauf hinzuweisen, dass das Zertifikat kein Ablaufdatum hat.

Beispiel: »+52w1d« (gültig von jetzt bis in 52 Wochen und einen Tag von jetzt), »-4w:+4w« (gültig von vor vier Wochen bis in vier Wochen von jetzt), »20100101123000:20110101123000« (gültig von 12:30 Uhr am 1. Januar 2010 bis 12:30 Uhr am 1. Januar 2011), »-1d:20110101« (gültig von gestern bis Mitternacht am 1. Januar 2011), »-1m:forever« (gültig von vor einer Minute und niemals ablaufend).

Ausführlicher Modus. Führt dazu, dass ssh-keygen Fehlersuchmeldungen über seinen Fortschritt ausgibt. Dies ist für die Fehlersuche bei der Moduli-Erstellung hilfreich. Mehrere -v -Optionen erhöhen die Ausführlichkeit. Das Maximum ist 3.
Anbieter
Gibt den Pfad zu einer Bibliothek an, die bei der Erstellung von Schlüsseln, die auf FIDO-Authentifikatoren liegen, verwandt werden; dies setzt die Vorgabe des Einsatzes von interner USB-HID-Unterstützung außer Kraft.
find-principals
Findet den/die dem öffentlichen Schlüssel einer Signatur zugeordneten Prinzipale, vorausgesetzt, der Schalter -s wurde in einer autorisierten Signierer-Datei verwandt und der Schalter -f wird eingesetzt. Das Format der erlaubten Signierer-Datei ist in dem nachfolgenden Abschnitt ERLAUBTE SIGNIERER beschrieben. Falls eine oder mehrere der passenden Prinzipalien gefunden wird, werden diese auf der Standardausgabe ausgegeben.
check-novalidate
Überprüft, dass die mit ssh-keygen -Y sign erstellte Signatur eine gültige Struktur hat. Dies validiert nicht, falls die Signatur von einem autorisierten Signierer kommt. Beim Überprüfen einer Signatur akzeptiert ssh-keygen eine Nachricht auf der Standardeingabe und einen Signaturnamensraum mittels -n. Es muss auch eine Datei mit der entsprechenden Signatur mittels des Schalters -s bereitgestellt werden. Erfolgreiche Überprüfung der Signatur wird von ssh-keygen durch Rückgabe eines Exit-Status von Null signalisiert.
sign
Signiert eine Datei oder bestimmte Daten mittels eines SSH-Schlüssels kryptographisch. Beim Signieren akzeptiert ssh-keygen auf der Befehlszeile null oder mehr Dateien - falls keine Dateien angegeben sind, dann wird ssh-keygen die auf der Standardeingabe vorhandenen Daten signieren. Signaturen werden auf den Pfad der Eingabedatei (mit angehängtem ».sig«) oder in die Standardausgabe, falls die zu signierende Nachricht von der Standardeingabe gelesen wurde, geschrieben.

Der zum Signieren verwandte Schlüssel wird mittels der Option -f angegeben und kann sich entweder auf einen privaten Schlüssel oder einen öffentlichen Schlüssel, dessen privater Anteil über ssh-agent(1) verfügbar ist, beziehen. Ein zusätzlicher Signaturnamensraum, der zur Vermeidung von Signaturchaos über verschiedene Anwendungsfelder hinweg eingesetzt wird (z.B. Dateisignierung im Vergleich zu E-Mail-Signierung), muss mit dem Schalter -n angegeben werden. Namensräume sind beliebige Zeichenketten und können Folgendes beinhalten: »file« für die Signatur von Dateien, »email« für die Signatur von E-Mails. Für angepasste Einsatzzwecke wird empfohlen, die Namen gemäß des Musters NAMENSRAUM@IHRE.DOMAIN zu verwenden, um eindeutige Namensräume zu erstellen.

verify
Erbittet die Überprüfung einer mit ssh-keygen -Y sign wie oben beschrieben erstellten Signatur. Beim Überprüfen der Signatur akzeptiert ssh-keygen eine Nachricht auf der Standardeingabe und einen Signaturnamensraum mittels -n. Es muss auch eine Datei, die die entsprechende Signatur enthält, mit dem Schalter -s bereitgestellt werden, zusammen mit der Identität des Signierers mittels -I und einer Liste der erlaubten Signierer mit dem Schalter -f. Das Format der Datei der erlaubten Signierer ist in dem nachfolgenden Abschnitt ERLAUBTE SIGNIERER beschrieben. Eine Datei mit gesperrten Schlüsseln kann mit dem Schalter -r übergeben werden. Die Sperrdatei kann eine KRL oder eine Liste von öffentlichen Schlüsseln, eine pro Datei, sein. Erfolgreiche Überprüfung durch einen autorisierten Signierer wird von ssh-keygen durch eine Rückgabe eines Exit-Status von Null signalisiert.
Diese Option liest eine Datei eines privaten Schlüssels im OpenSSH-Format ein und gibt einen öffentlichen OpenSSH-Schlüssel auf die Standardausgabe aus.
Seriennummer
Gibt eine Seriennummer an, die in das Zertifikat eingebettet werden soll, um dieses Zertifikat von anderen von der gleichen CA zu unterscheiden. Falls der Seriennummer das Zeichen ‘+’ vorangestellt wird, dann wird die Seriennummer bei jedem auf einer einzelnen Befehlszeile signierten Zertifikat erhöht. Die Vorgabeseriennummer ist Null.

Beim Erstellen einer KRL wird der Schalter -z zur Angabe einer KRL-Versionsnummer verwandt.

MODULI-ERSTELLUNG

ssh-keygen kann zur Erstellung einer Gruppe für das Diffie-Hellman-Gruppen-Austausch-Protokoll (DH-GEX) verwandt werden. Das Erstellen ist ein zweistufiger Prozess: zuerst werden mögliche Primzahlen mittels eines schnellen, aber speicherintensiven Prozesses erstellt. Diese Kandidatenprimzahlen werden dann auf Eignung geprüft (ein CPU-intensiver Prozess).

Die Erstellung von Primzahlen wird mit der Option -M generate durchgeführt. Die gewünschte Länge der Primzahlen kann mit der Option -O bits angegeben werden. Beispiel:

# ssh-keygen -M generate -O bits=2048 moduli-2048.candidates

Standardmäßig beginnt die Suche nach Primzahlen an einem Zufallspunkt in dem gewünschten Längenbereich. Dies kann mit der Option -O start außer Kraft gesetzt werden, die (in hexadezimaler Notation) einen anderen Startpunkt angibt.

Sobald eine Kandidatengruppe erstellt wurde, muss sie auf Eignung überprüft werden. Dies kann mit der Option -M screen erfolgen. In diesem Modus wird ssh-keygen Kandidaten von der Standardeingabe (oder einer mit der Option -f angegebenen Datei) einlesen. Beispiel:

# ssh-keygen -M screen -f moduli-2048.candidates moduli-2048

Standardmäßig unterliegt jeder Kandidat 100 Primzahlentests. Dies kann mit der Option -O prime-tests außer Kraft gesetzt werden. Der DH-Erstellerwert wird für die in Untersuchung befindliche Primzahl automatisch ausgewählt. Falls ein bestimmter Ersteller gewünscht ist, kann er mit der Option -O generator erbeten werden. Gültige Erstellerwerte sind 2, 3 und 5.

Geprüfte DH-Gruppen können in /etc/ssh/moduli installiert werden. Es ist wichtig, dass diese Datei Moduli eines Bereichs von Bitlängen enthält und dass beide Enden einer Verbindung gemeinsame Moduli verwenden.

Für die Moduli-Erstellung und -Überprüfung sind eine Reihe von Optionen mittels des Schalters -O verfügbar:

=Anzahl
Beendet sich nach der Überprüfung der angegebenen Anzahl von Zeilen bei der Durchführung der DH-Kandidatenprüfung.
=Zeilennummer
Beginnt die Überprüfung bei der angegebenen Zeilennummer bei der Durchführung der DH-Kandidatenprüfung.
=Dateiname
Schreibt die letzte verarbeitete Zeile in die angegebene Datei bei der Durchführung der DH-Kandidatenprüfung. Dies wird dazu verwandt, Zeilen in der Eingabedatei zu überspringen, die bereits verarbeitet wurden, wenn der Auftrag erneut gestartet wird.
=Megabyte
Gibt die für die Erstellung von Moduli für DH-GEX zu verwendende Speichermenge (in Megabyte) an.
=Hexadezimalwert
Gibt (in hexadezimaler Notation) den Startpunkt bei der Erstellung für Kandiaten-Moduli für DH-GEX an.
=Wert
Gibt den gewünschten Ersteller (in dezimaler Darstellung) bei dem Testen von Kandidaten-Moduli für DH-GEX an.

ZERTIFIKATE

ssh-keygen unterstützt das Signieren von Schlüsseln, um Zertifikate zu erstellen, die für Benutzer- oder Rechnerauthentifizierung verwandt werden können. Zertifikate bestehen aus einem öffentlichen Schlüssel, einigen Identitätsinformationen, einem oder mehreren Prinzipal- (Benutzer- oder Rechner-)Namen und einer Reihe von Optionen, die mittels des Schlüssels einer Zertifizierungsstelle (CA) unterschrieben sind. Clients oder Server brauchen dann nur dem CA-Schlüssel zu vertrauen und ihre Signatur auf einem Zertifikat zu prüfen, statt vielen Benutzer-/Rechnerschlüsseln zu vertrauen. Beachten Sie, dass OpenSSH-Schlüssel in einem anderen und viel einfacheren Format als die in ssl(8) verwandten X.509-Zertifikate sind.

ssh-keygen unterstützt zwei Arten von Zertifikaten: Benutzer und Rechner. Benutzerzertifikate authentifizieren Benutzer gegenüber Servern, während Rechnerzertifikate Serverrechner gegenüber Benutzern authentifizieren. Um ein Benutzerzertifikat zu erstellen, geben Sie Folgendes ein:

$ ssh-keygen -s /Pfad/zum/CA-Schlüssel -I key_id /Pfad/zum/Benutzerschlüssel.pub

Das entstandene Zertifikat wird unter /Pfad/zum/Benutzerschlüssel-Zert.pub abgelegt. Ein Rechnerzertifikat benötigt die Option -h:

$ ssh-keygen -s /Pfad/zum/CA-Schlüssel -I key_id -h /Pfad/zum/Rechnerschlüssel.pub

Das Rechnerzertifikat wird in /Pfad/zum/Rechnerschlüssel-cert.pub ausgegeben.

Es ist möglich, mittels eines in einem PKCS#11-Token gespeicherten CA-Schlüssel zu unterschreiben, indem die Token-Bibliothek mittels -D und die öffentliche Hälfte des kennzeichnenden CA-Schlüssels mit dem Argument von -s bereitgestellt wird:

$ ssh-keygen -s CA-Schlüssel.pub -D libpkcs11.so -I Schlüsselkennung Benutzerschlüssel.pub

Entsprechend ist es möglich, dass der CA-Schlüssel in einem ssh-agent(1) bereitgestellt wird. Dies wird durch den Schalter -U angezeigt und auch hier muss der CA-Schlüssel durch seinen öffentlichen Anteil identifiziert werden.

$ ssh-keygen -Us CA-Schlüssel.pub -I Schlüsselkennung Benutzerschlüssel.pub

In allen Fällen ist die Schlüsselkennung ein »Schlüsselkennzeichner«, der durch den Server protokolliert wird, wenn das Zertifikat zur Authentifizierung verwandt wird.

Zertifikate können in ihrer Gültigkeit auf eine Reihe Prinzipalennamen (Benutzer/Rechner) beschränkt werden. Standardmäßig sind erstellte Zertifikate für alle Benutzer oder Rechner gültig. Um ein Zertifikat für eine bestimmte Gruppe von Prinzipalen zu erstellen, verwenden Sie Folgendes:

$ ssh-keygen -s CA-Schlüssel -I Schlüsselkennung -n Benutzer1,Benutzer2 Benutzerschlüssel.pub
$ ssh-keygen -s CA-Schlüssel -I Schlüsselkennung -h -n Rechner.Domain Rechnerschlüssel.pub

Zusätzliche Beschränkungen für die Gültigkeit und den Einsatz von Benutzerzertifikaten können durch Zertifikatsoptionen angegeben werden. Eine Zertifikatsoption kann Funktionalitäten von der SSH-Sitzung deaktivieren, kann nur bei dem Einsatz von bestimmten Quelladressen gültig sein oder kann die Ausführung eines bestimmten Befehls erzwingen.

Die für Benutzerzertifikate gültigen Optionen sind:

Setzt alle aktivierten Berechtigungen zurück. Dies ist nützlich, um die Vorgabemenge an Berechtigungen zurückzusetzen, so dass Berechtigungen individuell hinzugefügt werden können.

:Name[=Inhalte]
 
:Name[=Inhalte]
Enthält eine beliebige kritische Zertifikatsoption oder -Erweiterung. Der angegebene Name sollte eine Domain-Endung enthalten, z.B. »name@example.com«. Falls Inhalte angegeben sind, dann werden sie als Inhalte der Erweiterung/Option (kodiert als Zeichenkette) aufgenommen, andernfalls wird die Erweiterung/Option ohne Inhalte erstellt, was normalerweise einen Schalter anzeigt. Erweiterungen können von einem Client oder Server, der diese nicht erkennt, ignoriert werden, während kritische Optionen dazu führen werden, dass das Zertifikat abgelehnt wird.

=Befehl
Erzwingt die Ausführung von Befehl statt einer von einem Benutzer angegebene Shell oder eines Befehls, wenn das Zertifikat zur Authentifizierung verwandt wird.

Deaktiviert ssh-agent(1) -Weiterleitung (standardmäßig erlaubt).

Deaktiviert Port-Weiterleitung (standardmäßig erlaubt).

Deaktiviert PTY-Zuweisung (standardmäßig erlaubt).

Deaktiviert Ausführung von ~/.ssh/rc durch sshd(8) (standardmäßig erlaubt).

Deaktiviert X11-Weiterleitung (standardmäßig erlaubt).

Erlaubt die ssh-agent(1) -Weiterleitung.

Erlaubt die Port-Weiterleitung.

Erlaubt PTY-Zuweisung.

Erlaubt die Ausführung von ~/.ssh/rc durch sshd(8).

Erlaubt die X11-Weiterleitung.

Es wird nicht verlangt, dass mit diesem Schlüssel erfolgte Signaturen den Nachweis der Anwesenheit des Benutzers enthalten (z.B. indem der Benutzer den Authentifikator berührt). Diese Option ergibt nur für FIDO-Authentifikatoralgorithmen ecdsa-sk und ed25519-sk Sinn.

=Adressenliste
Beschränkt die Quelladressen, aus der Zertifikate als gültig betrachtet werden. Die Adressenliste ist eine Kommata-getrennte Liste von einen oder mehreren Adresse/Netzmaske-Paaren im CIDR-Format.

Es wird verlangt, dass mit diesem Schlüssel erfolgte Signaturen anzeigen, dass der Benutzer zuerst überprüft wurde. Diese Option ergibt nur für FIDO-Authentifikatoralgorithmen ecdsa-sk und ed25519-sk Sinn. Derzeit ist PIN-Authentifizierung die einzige unterstützte Überprüfungsmethode, aber andere Methoden könnten in der Zukunft unterstützt werden.

Derzeit sind für Rechnerschlüssel keine Standardoptionen gültig.

Schließlich können Zertifikate mit einer Gültigkeitslebensdauer definiert werden. Die Option -V erlaubt die Angabe von Start- und Endzeiten des Zertifikats. Ein Zertifikat, das außerhalb dieses Bereichs vorgewiesen wird, wird nicht als gültig betrachtet. Standardmäßig sind Zertifikate von der UNIX -Epoche bis zur fernen Zukunft gültig.

Damit Zertifikate zur Benutzer- oder Rechnerauthentifizierung verwandt werden können, muss dem öffentlichen Schlüssel der CA durch sshd(8) oder ssh(1) vertraut werden. Bitte lesen Sie deren Handbuchseiten für Details.

SCHLÜSSELSPERRLISTEN

ssh-keygen kann SCHLÜSSELSPERRLISTEN (KRLs) im OpenSSH-Format verwalten. Diese Binärdateien geben Schlüssel oder Zertifikate, die gesperrt werden sollen, in einem kompakten Format an, wobei nur ein Bit pro Zertifikat benötigt wird, falls das Sperren über die Seriennummer erfolgt.

KRLs können mit dem Schalter -k erstellt werden. Diese Option liest eine oder mehrere Dateien von der Befehlszeile ein und erstellt eine neue KRL. Die Dateien können entweder eine KRL-Spezifikation (siehe unten) oder öffentliche Schlüssel, einen pro Zeile, enthalten. Einfache öffentliche Schlüssel werden gesperrt, indem ihr Hash oder Inhalt in der KRL aufgeführt werden und Zertifikate werden über die Seriennummer oder die Schlüsselkennung (falls die Seriennummer Null oder nicht verfügbar ist) gesperrt.

Das Sperren von Schlüsseln mit einer KRL-Spezifikation ermöglicht die genaue Steuerung über die Arten von Datensätzen, die zum Sperren von Schlüsseln verwandt werden, und kann verwendet werden, um Zertifikate direkt über die Seriennummer oder Schlüsselkennung zu sperren, ohne dass das vollständige Zertifikat vorliegen muss. Eine KRL-Spezifikation besteht aus Zeilen, die eine oder mehrere der nachfolgenden Direktiven, gefolgt von einem Doppelpunkt und einigen Direktiven-spezifischen Informationen, enthalten.

: Seriennummer[-Seriennummer]
Sperrt ein Zertifikat mit der angegebenen Seriennummer. Seriennummern sind 64-Bit-Werte, ohne Nullen und können dezimal, hexadezimal oder oktal angegeben werden. Falls zwei durch Bindestriche getrennte Seriennummern angegeben sind, dann wird der Seriennummernbereich, einschließlich und zwischen ihnen gesperrt. Der CA-Schlüssel muss auf der Befehlszeile von ssh-keygen mit der Option -s angegeben worden sein.
: Schlüsselkennung
Sperrt ein Zertifikat mit der angegebenen Schlüsselkennungszeichenkette. Der CA-Schlüssel muss auf der Befehlszeile von ssh-keygen mit der Option -s angegeben worden sein.
: öffentlicher_Schlüssel
Sperrt den angegebenen Schlüssel. Falls ein Zertifikat aufgeführt ist, dann wird es als einfacher öffentlicher Schlüssel gesperrt.
: öffentlicher_Schlüssel
Sperrt den angegebenen Schlüssel durch Aufnahme seines SHA1-Hashes in die KRL.
: öffentlicher_Schlüssel
Sperrt den angegebenen Schlüssel durch Aufnahme seines SHA256-Hashes in die KRL. KRLs, die Schlüssel durch SHA256-Hashes sperren, werden von OpenSSH-Versionen vor 7.9 nicht unterstützt.
: Fingerabdruck
Sperrt einen Schlüssel mittels eines Fingerabdruck-Hashes, wie er von einer sshd(8) -Authentifizierungs-Protokollnachricht oder dem Schalter -l von ssh-keygen erlangt werden kann. Hier werden nur SHA256-Fingerabdrücke unterstützt und resultierende KRLs werden von OpenSSH-Versionen vor 7.9 nicht unterstützt.

KRLs können zusätzlich zu -k auch mit dem Schalter -u aktualisiert werden. Wird diese Option angegeben, werden die auf der Befehlszeile aufgeführten Schlüssel mit der KRL zusammengeführt, wobei die dort befindlichen hinzugefügt werden.

Liegt eine KRL vor, ist es auch möglich, zu prüfen, ob es einen oder mehrere bestimmte(n) Schlüssel sperrt. Der Schalter -Q wird eine bestehende KRL befragen und jeden auf der Befehlszeile übergebenen Schlüssel testen. Falls ein auf der Befehlszeile aufgeführter Schlüssel gesperrt wurde (oder ein Fehler auftrat), dann wird ssh-keygen sich mit einem von Null verschiedenen Exit-Status beenden. Der Exit-Status 0 wird nur zurückgeliefert, falls kein Schlüssel gesperrt wurde.

ERLAUBTE SIGNIERER

Bei der Überprüfung von Signaturen verwendet ssh-keygen eine einfache Liste von Identitäten und Schlüsseln, um zu bestimmen, ob eine Signatur von einer autorisierten Quelle kommt. Diese »erlaubte Signierer«-Datei verwendet ein Format, das dem Muster des in »AUTHORIZED_KEYS-DATEIFORMAT« in sshd(8) beschriebenen Formats folgt. Jede Zeile der Datei enthält die folgenden, durch Leerraum getrennten Felder: Prinzipale, Optionen, Schlüsseltyp, Schlüssel (Base64-kodiert), leere Zeilen und solche, die mit einem ‘#’ beginnen, werden als Kommentare ignoriert.

Das Prinzipale-Feld ist eine Musterliste (siehe MUSTER in ssh_config(5)), die aus einem oder mehreren, durch Kommata getrennten BENUTZER@DOMAIN-Identitätsmustern, die zum Signieren akzeptiert werden, besteht. Beim Überprüfen muss die mittels der Option -I präsentierten Identitäten auf das Prinzipalenmuster passen, damit der entsprechende Schlüssel als für die Überprüfung akzeptierbar betrachtet wird.

Die Optionen (falls vorhanden) bestehen aus Kommata-getrennten Optionsangaben. Es sind keine Leerzeichen erlaubt, außer innerhalb von doppelten englischen Anführungszeichen. Die folgenden Optionsangaben werden unterstützt (beachten Sie, dass bei Optionsschlüsselwörtern die Groß-/Kleinschreibung egal ist):

Zeigt an, dass dieser Schlüssel als Zertifizierungsautorität (CA) akzeptiert ist und dass Zertifikate, die von dieser CA signiert wurden, zur Überprüfung akzeptiert werden.
Gibt eine Musterliste von Namensräumen an, die für diesen Schlüssel akzeptiert werden. Falls diese Option vorhanden ist, muss der in dem Signaturobjekt eingebettete und auf der Befehlszeile zur Überprüfung angegegebene Signaturnamensraum auf die angegebene Liste passen, bevor der Schlüssel als akzeptierbar betrachtet wird.

Bei der Überprüfung von durch Zertifikaten erstellten Signaturen muss der Prinzipalenname sowohl auf das Prinzipalenmuster in der Datei der erlaubten Signierer als auch auf die im Zertifikat eingebetteten Prinzipale passen.

Ein Beispiel für eine Datei erlaubter Signierer:

# Kommentare am Anfang der Zeile erlaubt
Benutzer1@example.com,Benutzer2@example.com ssh-rsa AAAAX1…
# Eine Zertifikatsautorität, der für alle Prinzipale in einer Domain vertraut wird.
*@example.com cert-authority ssh-ed25519 AAAB4…
# Ein Schlüssel, der nur für Dateisignaturen akzeptiert wird.
Benutzer2@example.com namespaces="file" ssh-ed25519 AAA41…

UMGEBUNGSVARIABLEN

Gibt einen Pfad zu einer Bibliothek an, die beim Laden jedes FIDO-Authentifikator-basierten Schlüssels verwandt wird. Dies setzt die standardmäßige, eingebaute USB-HID-Unterstützung außer Kraft.

DATEIEN

~/.ssh/id_dsa
 
~/.ssh/id_ecdsa
 
~/.ssh/id_ecdsa_sk
 
~/.ssh/id_ed25519
 
~/.ssh/id_ed25519_sk
 
~/.ssh/id_rsa
Enthält die DSA-, ECDSA-, Authentifikator-basierte ECDSA-, Ed25519-, Authentifikator-basierte Ed25519- oder RSA-Authentifizierungsidentität des Benutzers. Diese Datei sollte nur durch den Benutzer lesbar sein. Es ist möglich, bei der Erstellung eines Schlüssels eine Passphrase anzugeben; diese Passphrase wird zur Verschlüsselung des privaten Anteils der Datei mittels 128-Bit AES verwandt. ssh-keygen greift nicht automatisch auf diese Datei zu, sie wird aber als die Vorgabedatei für den privaten Schlüssel angeboten. ssh(1) wird diese Datei lesen, wenn ein Anmeldeversuch erfolgt.

~/.ssh/id_dsa.pub
 
~/.ssh/id_ecdsa.pub
 
~/.ssh/id_ecdsa_sk.pub
 
~/.ssh/id_ed25519.pub
 
~/.ssh/id_ed25519_sk.pub
 
~/.ssh/id_rsa.pub
Enthält den öffentlichen DSA-, ECDSA-, Authentifikator-basierten ECDSA-, Ed25519-, Authentifikator-basierten Ed25519- oder RSA-Schlüssel zur Authentifizierung. Der Inhalt dieser Datei sollte auf allen Maschinen, auf denen sich der Benutzer mittels Authentifizierung mit öffentlichen Schlüsseln anmelden möchte, zu ~/.ssh/authorized_keys hinzugefügt werden. Es ist nicht notwendig, die Inhalte dieser Dateien geheimzuhalten.

/etc/ssh/moduli
Enthält Diffie-Hellman-Gruppen zur Verwendung mit DH-GEX. Das Dateiformat ist in moduli(5) beschrieben.

SIEHE AUCH

ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8) »Das Format der öffentlichen Schlüssel der Secure Shell (SSH)«, RFC 4716, 2006.

AUTOREN

OpenSSH ist eine Ableitung der ursprünglichen und freien SSH-1.2.12-Veröffentlichung durch Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt und Dug Song entfernten viele Fehler, fügten neuere Funktionalitäten wieder hinzu und erstellten OpenSSH. Markus Friedl steuerte die Unterstützung für SSH-Protokollversion 1.5 und 2.0 bei.

Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer

$Mdocdate: 9. September 2020 $ Linux 4.19.0-16-amd64