Ansible应该放置私钥?

时间:2015-11-12 09:17:59

标签: ansible rsync

情景:
我们有2台服务器,并使用私钥通过ssh进行通信 服务器1(阶段)
服务器2(生产)
库存文件:

[server]
server1.com
server2.com

两台服务器都有默认用户名" ubuntu"
现在,我们需要在本地计算机,服务器1,服务器2上将私钥放在同一路径上。例如:
在本地计算机上:/ tmp / key / privatekey(远程服务器1的私钥)
在服务器1上:/ tmp / key / privatekey(远程服务器2的私钥)
在服务器2上:/ tmp / key / privatekey(远程服务器1的私钥)

- name: copy archived file to another remote server using rsync.
      synchronize: mode=pull src=/home/{{ user }}/packages/{{ package_name }}.tar.gz dest=/tmp/{{ package_name }}.tar.gz archive=yes
      delegate_to: "{{ production_server }}"
      tags: release

Ansible playbook:

ansible-playbook -i inventory --extra-vars "host=server[0] user=ubuntu" --private-key=/tmp/key/privatekey playbook.yml --tags "release"

在本地计算机上执行ansible playbook将远程服务器1将服务器1上的存档文件复制到服务器2。

这是按照我们的预期工作,但这很荒谬,我们必须将私钥放在3台机器(本地,服务器1,服务器2)上的同一路径上。如果我们想将私钥放在不同的路径上怎么办?或者用户想要为服务器1和服务器2使用不同的帐户/用户名?

我尝试过修改广告资源,为服务器2提供用户和授权密钥。我将私钥放在/ home / ubuntu / key /下的服务器1上:

[server]
server1.com
server2.com ansible_ssh_private_key_file=/home/ubuntu/key/privatekey    ansible_ssh_user=ubuntu

然后在上面运行相同的ansible playbook命令。结果,服务器1无法远程服务器2

如果我们想将私钥放在不同的路径上怎么办?或者用户想要为服务器1和服务器2使用不同的帐户/用户名?

1 个答案:

答案 0 :(得分:1)

我认为你让自己的生活变得更加艰难。如果我认为您正在使用“ubuntu'和标准RSA密钥

  1. 拿起你的PPK对并将它们放在每台机器上的/home/ubuntu/.ssh/id_rsa和/home/ubuntu/.ssh/id_rsa.pub中。这些是sshd守护程序看起来的PPK文件的默认位置。

  2. 编写一个playbook,将公钥(使用authorized_keys模块)从控制台部署到目标计算机。由于您共享密钥,因此它们都是相同的。

  3. 如果您想通过delegate_to在server1和server2之间进行通信,则必须更新ubuntu用户的ssh_config。您在此处的选项是关闭主机密钥/已知主机检查或将相应的条目添加到known_hosts。前者(不太安全)可以通过添加/home/ubuntu/.ssh/config文件来完成,后者(更安全)可以通过ssh-keyscan完成(参见https://serverfault.com/questions/132970/can-i-automatically-add-a-new-host-to-known-hosts

  4. 这里的部分问题是,当你使用delegate_to时,我不认为通常在控制机器上构建的整个ssh连接逻辑不会传播到委托机器。 / p>

    此外,我不会将您的私钥放在tmp目录

    希望这有帮助