Sto cercando di rafforzare la mia configurazione ssh usando questo materiale. Funziona bene, ma ho una domanda a cui faccio fatica a trovare la risposta.
Qualcuno sa se esiste un modo per controllare la firma del certificato host/utente ssh rispetto alla CA SSH? So che posso semplicemente provare a ssh in host, che contiene quel certificato host, e se si connette, la firma è ovviamente ok...
Ma sto scrivendo un'attività di automazione e ho bisogno di un modo programmatico per assicurarmi che il file del certificato è firmato da CA. Di' un po' di ssh-keygen
comando o qualsiasi altra cosa.
AGGIORNAMENTO:
Come proposto da @PKapp:
Potrei confrontare due output:l'impronta digitale della firma della CA dal certificato lato server e l'impronta digitale della CA stessa
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
Se gli output filtrati sono identici, i certificati corrispondono...
Risposta accettata:
Per ottenere in remoto i certificati host ssh, puoi usare ssh-keyscan -c <hostname>
(senza il -c
opzione, otterrai solo le chiavi host). Per limitare a un tipo di certificato specifico, puoi includere -t type
, utilizzando ssh-rsa
non [email protected]
, se necessario.
Quindi, puoi estrarre i dettagli del certificato, inclusa la chiave pubblica della CA di firma, con ssh-keygen -L -f <certfile>
. Se usi -l
(minuscolo). invece, quindi ssh-keygen
restituisce solo le informazioni sulla chiave host (pubblica) sottostante incorporata nel certificato, anziché tutti gli elementi del certificato.