Ansible 我可以使用在保险库中加密的ssh密钥吗?

Ansible 我可以使用在保险库中加密的ssh密钥吗?,ansible,Ansible,我们有一个ansible服务器设置,ansible代码存储在git repos中。ansible配置的所有服务器当前都使用来自控制服务器的SSH密钥进行访问。但是,我希望将密钥包含在ansible git repos中(在vault中加密)。我想这样做: 1) 如果我们的ansible服务器遭到破坏/出现无法恢复的硬盘故障/其他一些故障,我们就不必在再次运行ansible任务之前生成新的ssh密钥并将其复制到每个ansible服务器 2) 感觉它应该在repos中,因为它是访问服务器的设置/配置

我们有一个ansible服务器设置,ansible代码存储在git repos中。ansible配置的所有服务器当前都使用来自控制服务器的SSH密钥进行访问。但是,我希望将密钥包含在ansible git repos中(在vault中加密)。我想这样做:

1) 如果我们的ansible服务器遭到破坏/出现无法恢复的硬盘故障/其他一些故障,我们就不必在再次运行ansible任务之前生成新的ssh密钥并将其复制到每个ansible服务器

2) 感觉它应该在repos中,因为它是访问服务器的设置/配置的一部分

3) 我们在vault中存储了其他数据,必须为vault输入一个密码,为SSH密码输入另一个密码是一件痛苦的事情

我们研究了通过在磁盘上创建一个临时文件来编写一个自定义任务,但感觉它应该是内置的。此外,我喜欢内置的解密方式只保存ram中的文件。另一个问题是,我们找不到一个在发生故障时可以保证运行的方法,因此需要清理我们创建的临时文件(有点像编程中的确保块)


有没有安全的方法来使用保险存储的ssh密钥?或者,如果这只是一种预先请求ssh密码短语的方法,那么每个用户都应该拥有自己的私钥,以便从控制服务器访问部署帐户。通过这种方式,如果某人离开或不再需要访问服务器,您可以更轻松地撤销他们的访问权限。这还允许您控制它们所针对的服务器

为了避免每次都提示输入SSH密码,请使用SSH代理,它将凭据缓存在内存中并避免提示。我在我的设置中使用它,它工作得很好


将您的凭据提交到源代码存储库(尽管我也这样做了)不是一个好的安全实践。在ansible服务器上备份用户的主目录可保护私钥免受硬盘故障的影响

谢谢你,戴夫。我猜这只是一个简单的服务器,除了运行ansible没有其他工作,所以我们希望它尽可能简单,尤其是在云中(避免备份等)。我们实际上只使用了一个共享帐户,尽管事后我不知道为什么。无论如何,ssh代理技巧将很好地工作。谢谢,您可能想研究使用SSH代理转发。这样,开发人员/任何人都可以将其私钥保持私有(在其受信任的机器上,没有其他用户访问),然后通过SSH连接到您的控制服务器,并从那里简单地运行Ansible。本地ssh代理应通过控制箱将凭据转发到正在配置的远程节点。