我有一个使用 ssh 证书来验证 ssh 主机密钥的环境。我说的是通过运行创建的证书类型ssh-keygen -s /path/to/ca -h ...
。这些证书也创建了一个有效间隔,说明它们何时到期。这些证书现在已经使用了足够长的时间,以至于我需要开始监视它们,以便在它们开始接近到期时提醒您。
任何方式我都可以在不登录的情况下进行远程连接,并且以某种方式获得显示的有效间隔。下载证书?运行ssh -vvv
似乎没有显示我需要的信息。两者似乎都没有ssh-keyscan
证书意识。也许是我没有仔细研究过的一些图书馆?
最坏的情况是我总是可以编写一个在本地运行并解析ssh-keygen -L -f
. 尽管如此,远程扫描确实感觉是更可取的方法。
这是可能的,但它缺乏工具支持。我找到了一个库,它可以很好地使用 SSH 协议,让我可以编写一个工具来提取主机证书 valid_before 时间,而无需完整的 ssh 登录。在这里,在 Go 语言中。我希望它有所帮助。
(快速使用说明:安装Go,将上面看到的代码保存在 sshcertscan.go 中,运行
go build sshcertscan.go
,然后将其指向 examplehost 端口 22 上的 ssh 服务器./sshcertscan examplehost:22
。)不幸的是,我不知道任何开源工具。似乎 nmap 可以使用NSE脚本以某种方式检索它(但需要一些调整——检查 /usr/share/nmap/scripts)。
SSH 的Tectia SSH服务器包含一个名为 ssh-fetchkey 的工具,它将检索证书,然后您可以使用 ssh-certview 查看详细信息。
恐怕答案是“那不可能”。至少我没有找到任何方式,使用 openssh 客户端或用于 python 的 paramiko SSH 库。我建议按照您的描述进行本地检查,并结合更简单的远程检查来验证 SSHD 使用的密钥是否是您刚刚检查其证书生命周期的密钥。