Dre*_*rew 4 ssh authentication openssh key-authentication certificates
我正在尝试使用此材料强化我的 ssh 设置。它工作正常,但我有一个问题正在努力寻找答案。
有谁知道是否有办法根据 SSH CA 检查 ssh 主机/用户证书签名?我知道我可以尝试 ssh 进入持有该主机证书的主机,如果它连接了,那么签名显然没问题......但我正在编写一个自动化任务,我需要一种编程方式来确保证书文件由 CA 签名。说出一些ssh-keygen
命令或其他任何内容。
更新:
正如@PKapp 提议的那样:
我可以比较两个输出:服务器端证书签名 CA 的指纹和 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
Run Code Online (Sandbox Code Playgroud)
如果过滤后的输出相同,则证书匹配...
要远程获取 ssh 主机证书,您可以使用ssh-keyscan -c <hostname>
(如果没有该-c
选项,您将只能获取主机密钥)。要限制特定证书类型,如有必要,您可以包含-t type
、使用ssh-rsa
not ssh-rsa-cert-v01@openssh.com
。
然后,您可以使用 .zip 文件提取证书详细信息,包括签名 CA 的公钥ssh-keygen -L -f <certfile>
。如果您使用(小写)-l
,则ssh-keygen
仅输出有关证书中嵌入的基础(公共)主机密钥的信息,而不是所有证书元素。