【发布时间】:2023-03-06 16:41:01
【问题描述】:
如何在每次 Ansible 阶段运行时设置 SSH 证书签名过程?
我有使用 Terraform 创建 VM 然后运行 Ansible 的管道。在 cloud-init 阶段创建和签名主机密钥,并配置公共用户 CA 密钥。
客户端/主机 CA 权限在 HashiCorp Vault 中配置。
因此,此时,无论配置了哪些 VM,我都可以通过 SSH 连接到每个 VM,因为我在 /etc/ssh/ssh_known_hosts 中全局设置了 @cert-authority *.example.com ecdsa-sha2-nistp521 AAAAB3NzaC1yc2EAAA...。我需要做的就是创建新密钥并对其进行签名,因为我的 TTL 很短。
但这在 Jenkins 中不起作用。
Jenkins 将所有 SSH 密钥存储在 /var/lib/jenkins/.ssh 下,默认情况下没有任何内容。
如果只是出于测试原因,我确实将我的个人用户密钥和证书 + ssh 配置文件复制到/var/lib/jenkins/.ssh,那么 Jenkins 可以愉快地运行 Ansible。
但是,每次我在我的 infra repo 中进行一些提交时,我都无法生成、签名和复制 jenkins 密钥。创建长寿证书也不好闻。
SSH 证书签名和轮换的惯用工作流程是什么?
【问题讨论】:
-
这个可能有更多机会在 superuser.com 上得到回答