5

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

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

4

2 回答 2

3

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

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

于 2017-09-20T11:14:35.930 回答
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 会检测其他三个中的哪一个最适合使用。

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

于 2017-09-20T21:55:59.490 回答