Estoy tratando de fortalecer mi configuración ssh usando este material. Funciona bien, pero tengo una pregunta a la que me cuesta encontrar la respuesta.
¿Alguien sabe si hay alguna forma de verificar la firma del certificado de usuario/host ssh con la CA SSH? Sé que puedo simplemente intentar conectarme al host, que contiene ese certificado de host, y si se conecta, entonces la firma obviamente está bien...
Pero estoy escribiendo una tarea de automatización y necesito una forma programática para asegurarme de que el archivo de certificado está firmado por CA. Di algo de ssh-keygen
comando o cualquier otra cosa.
ACTUALIZACIÓN:
Como propuso @PKapp:
Podría comparar dos resultados:la huella digital de la CA de firma del certificado del lado del servidor y la huella digital de la CA misma
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 las salidas filtradas son idénticas, entonces los certificados coinciden...
Respuesta aceptada:
Para obtener de forma remota certificados de host ssh, puede usar ssh-keyscan -c <hostname>
(sin -c
opción, solo obtendrá la(s) clave(s) de host). Para limitar a un tipo de certificado específico, puede incluir -t type
, usando ssh-rsa
no [email protected]
, si es necesario.
Luego, puede extraer los detalles del certificado, incluida la clave pública de la CA firmante, con ssh-keygen -L -f <certfile>
. Si usa (minúsculas) -l
en su lugar, entonces ssh-keygen
solo genera la información sobre la clave de host subyacente (pública) incrustada en el certificado, en lugar de todos los elementos del certificado.