ansible是否安全地传输文件?

时间:2017-09-20 03:29:49

标签: encryption ansible file-transfer ansible-vault

我使用Ansible 2.2从我的笔记本电脑管理一些云服务器。我想将OpenSSL私钥传输到其中一个服务器上的特定位置,以供nginx用于TLS终止。当然,这是一个应保密的文件,因此我使用Ansible Vault对其进行了加密。但Vault仅保护控制计算机上的磁盘文件。将数据从控制机器传输到受管节点时,它并没有发挥作用。

我想确保监控网络流量的人在传输过程中不会泄露私钥。我没有具体提到我在docs for the copy module中可以看到的内容。据我所知,我与被管节点的所有通信都是通过SSH完成的。这是一个安全的假设吗?它是否包含文件传输?

2 个答案:

答案 0 :(得分:3)

您是对的,通过ssh安全地完成与受管节点的所有通信。您的保管库在控制器上解密,明文私钥通过安全的ssh连接发送并丢弃在目标节点上。

明文私钥可能会在目标节点上变得不安全,具体取决于谁可以登录,所有权,组成员身份,访问权限等。您可以安全地配置它们。

答案 1 :(得分:2)

答案取决于连接类型。

有一个Ansible复制插件,它遵循连接。插件的源代码在这里:

https://github.com/ansible/ansible/blob/bc66faa328b1413646ec249cd2753de5e09f1a35/lib/ansible/plugins/action/copy.py

这会将副本推迟到ActionBase._transfer_file,然后推迟到Connection.put_file

有许多不同的连接实现,其中一些是安全的,一些则不是。如果您正在使用SSH连接,那么它使用scp或sftp来执行实际复制并且是安全的。

这可以在ssh源中看到:

https://github.com/ansible/ansible/blob/442af3744ebd60c7ffcaae22b61fb762ccc7c425/lib/ansible/plugins/connection/ssh.py#L954

put_file委托给_file_transport_command,然后可以使用scp,sftp,“smart”或者管道。 Smart会检测其他三个中哪一个最好用。

注意:有一个Ansible复制模块,它只在本地复制文件,不需要安全复制。这就是我之前的答案错误地指出的,所以我删除了它。