我使用Ansible 2.2从我的笔记本电脑管理一些云服务器。我想将OpenSSL私钥传输到其中一个服务器上的特定位置,以供nginx用于TLS终止。当然,这是一个应保密的文件,因此我使用Ansible Vault对其进行了加密。但Vault仅保护控制计算机上的磁盘文件。将数据从控制机器传输到受管节点时,它并没有发挥作用。
我想确保监控网络流量的人在传输过程中不会泄露私钥。我没有具体提到我在docs for the copy
module中可以看到的内容。据我所知,我与被管节点的所有通信都是通过SSH完成的。这是一个安全的假设吗?它是否包含文件传输?
答案 0 :(得分:3)
您是对的,通过ssh安全地完成与受管节点的所有通信。您的保管库在控制器上解密,明文私钥通过安全的ssh连接发送并丢弃在目标节点上。
明文私钥可能会在目标节点上变得不安全,具体取决于谁可以登录,所有权,组成员身份,访问权限等。您可以安全地配置它们。
答案 1 :(得分:2)
答案取决于连接类型。
有一个Ansible复制插件,它遵循连接。插件的源代码在这里:
这会将副本推迟到ActionBase._transfer_file
,然后推迟到Connection.put_file
。
有许多不同的连接实现,其中一些是安全的,一些则不是。如果您正在使用SSH连接,那么它使用scp或sftp来执行实际复制并且是安全的。
这可以在ssh源中看到:
将put_file
委托给_file_transport_command
,然后可以使用scp,sftp,“smart”或者管道。 Smart会检测其他三个中哪一个最好用。
注意:有一个Ansible复制模块,它只在本地复制文件,不需要安全复制。这就是我之前的答案错误地指出的,所以我删除了它。