J'essaie de renforcer ma configuration ssh en utilisant ce matériel. Cela fonctionne bien, mais j'ai une question à laquelle j'ai du mal à trouver la réponse.
Est-ce que quelqu'un sait s'il existe un moyen de vérifier la signature du certificat hôte/utilisateur ssh par rapport à l'autorité de certification SSH ? Je sais que je peux simplement essayer de ssh dans l'hôte, qui détient ce certificat d'hôte, et s'il se connecte, la signature est évidemment correcte…
Mais j'écris une tâche d'automatisation et j'ai besoin d'un moyen programmatique pour m'assurer que le fichier de certificat est signé par CA. Dites quelques ssh-keygen
commande ou toute autre chose.
MISE À JOUR :
Comme @PKapp l'a proposé :
J'ai pu comparer deux sorties :l'empreinte digitale de l'AC de signature du certificat côté serveur et l'empreinte digitale de l'AC elle-même
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
Si les sorties filtrées sont identiques, alors les certificats correspondent…
Réponse acceptée :
Pour obtenir à distance le(s) certificat(s) d'hôte ssh, vous pouvez utiliser ssh-keyscan -c <hostname>
(sans le -c
option, vous n'obtiendrez que la ou les clés d'hôte). Pour limiter à un type de certificat spécifique, vous pouvez inclure -t type
, en utilisant ssh-rsa
pas [email protected]
, si nécessaire.
Ensuite, vous pouvez extraire les détails du certificat, y compris la clé publique de l'autorité de certification signataire, avec ssh-keygen -L -f <certfile>
. Si vous utilisez (minuscule) -l
à la place, puis ssh-keygen
ne produit que les informations sur la clé d'hôte (publique) sous-jacente intégrée dans le certificat, plutôt que tous les éléments du certificat.