SSH-Pubkey mit mehreren Zertifikaten verwenden

376
jan

Ich verwende einen öffentlichen SSH-Schlüssel, um eine Verbindung zu einer Reihe von Servern herzustellen. Die Server verwenden eine SSH-Zertifizierungsstelle, um autorisierte Benutzer zu verwalten. Das Grundkonzept wird hier beschrieben: https://www.digitalocean.com/community/tutorials/wie-nach-anlegen-anssh-ca-nach-validierungs-hosts-und-Kunden-mit-ubuntu

Neben meinen üblichen Dateien id_rsaund id_rsa.pubDateien habe ich auch eine id_rsa-cert.pubDatei, die das Zertifikat enthält. All dies funktioniert ziemlich gut. Ich kann mich sofort bei neuen Computern anmelden, die so konfiguriert sind, dass sie dem CA-Schlüssel, der zum Signieren meines Schlüssels verwendet wurde, vertrauen.

Ich habe jedoch jetzt meinen Schlüssel von einer anderen Zertifizierungsstelle für eine andere Gruppe von Maschinen signiert. Die Frage ist nun, wie kann ich SSH mitteilen, dass es jetzt zwei Zertifikate für diesen Schlüssel gibt. Aus der Dokumentation scheint es keine Möglichkeit zu geben, eine zweite Zertifikatsdatei anzugeben:

ssh(1) will try to load certificate information from the filename obtained by appending -cert.pub to the path of a specified IdentityFile. 

Das neue Zertifikat einfach an diese Datei anzuhängen (wie Sie es tun würden authorized_keys), funktioniert ebenfalls nicht. In diesem Fall erkennt SSH nur das erste Zertifikat und ignoriert den Rest der Datei.

Weiß jemand, wie man SSH sagt, dass ich ein zweites Zertifikat für diesen Schlüssel habe?

4

2 Antworten auf die Frage

3
pim

Da Sie denselben privaten Schlüssel verwenden und sshanhand des Schlüsselnamens den Zertifikatsnamen erraten, kopieren Sie Ihren privaten und öffentlichen Schlüssel:

cp ~.ssh/id_rsa id_rsa_group2 cp ~.ssh/id_rsa.pub id_rsa_group2.pub # probably not necessary 

Dann muss der Name des Zertifikats übereinstimmen, sollte es sein id_rsa_group2-cert.pub

Probier es aus : ssh -i .ssh/id_rsa_group2 ip_of_your_server

Dann machen Sie die Tastenauswahl durch Bearbeiten automatisch ~/.ssh/config

# For your first certificate: Host a User root IdentityFile ~/.ssh/id_rsa  # For your new certificate Host b User root IdentityFile ~/.ssh/id_rsa_group2 
Ich muss das ausprobieren. Weißt du, ob ich dazu meinen privaten Schlüssel zweimal zu ssh-agent hinzufügen muss, oder wird es erkennen, dass es sich um den gleichen Schlüssel für beide Identitäten handelt? jan vor 6 Jahren 0
Ich habe etwas interessantes gefunden, aber anders genug, um eine andere Antwort zu posten pim vor 6 Jahren 0
1
pim

Sie können die CertificateFileKonfigurationsoption zu diesem Zweck verwenden, entweder in der Befehlszeile: ssh -o CertificateFile=~/.ssh/second_certificate.pub host_boder indem Sie sie in die Konfigurationsdatei ( ~/.ssh/config) setzen.

Host host_b CertificateFile `~/.ssh/second_certificate.pub 

Da in beiden Fällen dasselbe Zertifikat verwendet wird, sollte es gut mit Ihrem Server zusammenarbeiten ssh-agent.