Ein SSH-Zertifikat ist ein Mechanismus, mit dem ein SSH-Schlüssel einen anderen SSH-Schlüssel signieren kann. Wenn Du eine SSH-Zertifizierungsstelle (CA) verwendest, um den Mitgliedern Deiner Organisation signierte SSH-Zertifikate bereitzustellen, kannst Du die Zertifizierungsstelle zu Deinem Enterprise-Konto oder Deiner Organisation hinzufügen, damit die Organisationsmitglieder mit ihren Zertifikaten auf die Ressourcen der Organisation zugreifen können. Weitere Informationen findest Du unter „SSH-Zertifizierungsstellen Deiner Organisation verwalten.“
Wenn Du eine SSH-Zertifizierungsstelle zu Deiner Organisation oder Deinem Enterprise-Konto hinzugefügt hast, kannst Du mit der Zertifizierungsstelle Client-SSH-Zertifikate für Organisationsmitglieder signieren. Organisationsmitglieder können mit den signierten Zertifikaten mit Git auf die Repositorys Deiner Organisation (und nur auf diese) zugreifen. Du kannst vorschreiben, dass die Mitglieder SSH-Zertifikate für den Zugriff auf die Organisationsressourcen verwenden müssen.
Du kannst beispielsweise ein internes System einrichten, das jeden Morgen ein neues Zertifikat für Deine Entwickler herausgibt. Die Entwickler können mit ihrem aktuellen Zertifikat in den Repositorys Ihrer Organisation auf GitHub Enterprise Server arbeiten. Am Ende des Tages läuft das Zertifikat automatisch ab. So werden Deine Repositorys geschützt, falls das Zertifikat zu einem späteren Zeitpunkt kompromittiert wird.
Beim Herausgeben der einzelnen Zertifikate musst Du eine Erweiterung hinzufügen, die festlegt, für welchen GitHub Enterprise Server-Benutzer das Zertifikat gedacht ist. Sie können z. B. den OpenSSH-Befehl ssh-keygen
verwenden und dabei KEY-IDENTITY durch Ihre Schlüssel-Identität und USERNAME einen GitHub Enterprise Server-Benutzernamen ersetzen. The certificate you generate will be authorized to act on behalf of that user for any of your organization's resources. Make sure you validate the user's identity before you issue the certificate.
$ ssh-keygen -s ./ca-key -I KEY-IDENTITY -O extension:login@[hostname]=USERNAME ./user-key.pub
To issue a certificate for someone who uses SSH to access multiple GitHub products, you can include two login extensions to specify the username for each product. For example, the following command would issue a certificate for USERNAME-1 for the user's account for GitHub Enterprise Cloud, and USERNAME-2 for the user's account on GitHub AE or GitHub Enterprise Server at HOSTNAME.
$ ssh-keygen -s ./ca-key -I KEY-IDENTITY -O extension:login@github.com=USERNAME-1 extension:login@HOSTNAME=USERNAME-2 ./user-key.pub
Mit der Erweiterung source-address
schränkst Du die IP-Adressen ein, von denen aus ein Organisationsmitglied auf die Ressourcen Deiner Organisation zugreifen kann. Als Erweiterung ist eine bestimmte IP-Adresse oder ein IP-Adressbereich mit CIDR-Notation zulässig. Sollen mehrere Adressen oder Bereiche angegeben werden, trenne sie durch Komma voneinander ab. Weitere Informationen findest Du unter „Classless Inter-Domain Routing“ auf Wikipedia.
$ ssh-keygen -s ./ca-key -I KEY-IDENTITY -O extension:login@[hostname]=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub
Als Vorbeugung gegen Authentifizierungsfehler sollten die Organisationsmitglieder spezielle URLs einsetzen, welche die Organisations-ID enthält, wenn sie Repositorys mit signierten Zertifikaten klonen wollen. Alle Benutzer mit Lesezugriff auf das Repository finden diese URL auf der Repository-Seite. Weitere Informationen findest Du unter „Ein Repository clonen“.