Snažím se zpevnit své nastavení ssh pomocí tohoto materiálu. Funguje to dobře, ale mám otázku, na kterou se snažím najít odpověď.
Ví někdo, jestli existuje způsob, jak zkontrolovat podpis certifikátu hostitele/uživatele ssh proti SSH CA? Vím, že se mohu jen pokusit připojit ssh do hostitele, který má tento hostitelský certifikát, a pokud se připojí, podpis je samozřejmě v pořádku...
Ale píšu automatizační úlohu a potřebuji programový způsob, jak zajistit, že soubor certifikátu je podepsán CA. Řekněte nějaký ssh-keygen
příkaz nebo cokoliv jiného.
AKTUALIZACE:
Jak navrhl @PKapp:
Mohl bych porovnat dva výstupy:otisk podepisující CA od certifikátu na straně serveru a otisk samotného CA
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
Pokud jsou filtrované výstupy identické, pak se certifikáty shodují…
Přijatá odpověď:
Chcete-li vzdáleně získat certifikát(y) hostitele ssh, můžete použít ssh-keyscan -c <hostname>
(bez -c
možnost, získáte pouze hostitelský klíč (klíče). Pro omezení na konkrétní typ certifikátu můžete zahrnout -t type
pomocí ssh-rsa
není [email protected]
, v případě potřeby.
Poté můžete extrahovat podrobnosti certifikátu, včetně veřejného klíče podepisující CA, pomocí ssh-keygen -L -f <certfile>
. Pokud použijete (malá písmena) -l
místo toho pak ssh-keygen
vypíše pouze informace o základním (veřejném) hostitelském klíči vloženém do certifikátu, nikoli všechny prvky certifikátu.