GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich überprüfen, ob das SSH-Zertifikat mit dem angegebenen privaten Ssh-Ca-Schlüssel signiert wurde?

Ich versuche, mein SSH-Setup mit diesem Material zu härten. Es funktioniert gut, aber ich habe eine Frage, auf die ich Schwierigkeiten habe, eine Antwort zu finden.

Weiß jemand, ob es eine Möglichkeit gibt, die Signatur des SSH-Host-/Benutzerzertifikats mit der SSH-Zertifizierungsstelle zu vergleichen? Ich weiß, dass ich einfach versuchen kann, per ssh in einen Host zu gelangen, der dieses Host-Zertifikat enthält, und wenn es eine Verbindung herstellt, ist die Signatur offensichtlich in Ordnung…
Aber ich schreibe eine Automatisierungsaufgabe und brauche einen programmgesteuerten Weg, um dies sicherzustellen Die Zertifikatsdatei ist von CA signiert. Sagen Sie etwas ssh-keygen Befehl oder etwas anderes.

AKTUALISIERUNG:

Wie @PKapp vorgeschlagen hat:

Ich konnte zwei Ausgaben vergleichen:den Fingerabdruck der signierenden Zertifizierungsstelle vom serverseitigen Zertifikat und den Fingerabdruck der Zertifizierungsstelle selbst

sudo ssh-keygen -L -f /etc/ssh/ssh_host_ed25519_key-cert.pub | fgrep "Signing CA" | sed 's/^[ t]*//' | cut -d ' ' -f 4
SHA256:LkdPQLdx4tuZp7pG0g6nAJqilFd6ZzjGdgVEV9elrdA

sudo ssh-keygen -l -f /etc/ssh/id_ed25519-HostCA.pub | cut -d ' ' -f 2
SHA256:LkdPQLdx4tuZp7pG0g6nAJqilFd6ZzjGdgVEV9elrdA

Wenn die gefilterten Ausgaben identisch sind, dann stimmen die Zertifikate überein…

Akzeptierte Antwort:

Um SSH-Host-Zertifikate aus der Ferne zu erhalten, können Sie ssh-keyscan -c <hostname> verwenden (ohne das -c erhalten Sie nur den/die Gastgeberschlüssel). Um sich auf einen bestimmten Zertifikatstyp zu beschränken, können Sie -t type einfügen , mit ssh-rsa nicht [email protected] , falls erforderlich.

Anschließend können Sie die Zertifikatsdetails, einschließlich des öffentlichen Schlüssels der signierenden CA, mit ssh-keygen -L -f <certfile> extrahieren . Wenn Sie (Kleinbuchstaben) -l verwenden stattdessen dann ssh-keygen gibt nur die Informationen über den zugrunde liegenden (öffentlichen) Hostschlüssel aus, der in das Zertifikat eingebettet ist, und nicht alle Zertifikatselemente.


Linux
  1. So richten Sie die SSH-Anmeldung ohne Passwort ein

  2. So generieren Sie ein SSH-Schlüsselpaar (mit Beispielen)

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

  4. So richten Sie SSH-Schlüssel für die SSH-Anmeldung mit „öffentlichen/privaten Schlüsseln“ unter Linux ein

  5. SSH von A über B nach C, mit privatem Schlüssel auf B

Wie SSH eine sichere Kommunikation herstellt

So erstellen Sie eine SSH-Schlüssel-Passphrase unter Linux

So richten Sie den öffentlichen und privaten SSH-Schlüssel unter Linux ein

So fügen Sie dem Server einen öffentlichen SSH-Schlüssel hinzu

So verbessern Sie die SSH-Sicherheit unter Ubuntu 18.04

So konvertieren Sie den privaten Schlüssel von PuTTY (.ppk) in einen SSH-Schlüssel