如何使用公共密钥对.pem文件的ansible playbooks?

Ale*_*hen 9 ssh amazon-ec2 ansible

我想使用公共aws keypair .pem文件来运行ansible playbooks.我想在不改变我的情况下这样做~/.ssh/id_rsa.pub,我不能从我当前创建一个新的密钥对,~/.ssh/id_rsa.pub并将其应用于我想要改变的ec2实例.

$ ansible --version
ansible 1.9.6
  configured module search path = None
Run Code Online (Sandbox Code Playgroud)

这是我的主机文件(请注意我的实际IP替换为1.2.3.4).这可能是问题,因为我需要一种方法来设置公钥变量并使用它:

[all_servers:vars]
ansible_ssh_private_key_file = ./mykeypair.pem

[dashboard]
1.2.3.4 dashboard_domain=my.domain.info 
Run Code Online (Sandbox Code Playgroud)

这是我的剧本:

---
- hosts: dashboard
  gather_facts: False
  remote_user: ubuntu

  tasks:
    - name: ping
      ping:
Run Code Online (Sandbox Code Playgroud)

这是我用来运行它的命令:

ansible-playbook -i ./hosts test.yml
Run Code Online (Sandbox Code Playgroud)

它会导致以下错误:

fatal: [1.2.3.4] => SSH Error: Permission denied (publickey).
    while connecting to 1.2.3.4:22
Run Code Online (Sandbox Code Playgroud)

我的密钥对没有问题:

$ ssh -i mykeypair.pem ubuntu@1.2.3.4 'whoami'
ubuntu
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Ale*_*hen 14

好的小错误我猜你不能在主机文件变量中有空格,需要定义你要应用变量的组.这个hosts文件适用于所有:

[dashboard:vars]
ansible_ssh_private_key_file=./mykeypair.pem

[dashboard]
1.2.3.4 dashboard_domain=my.domain.info 
Run Code Online (Sandbox Code Playgroud)


Vic*_*iga 11

我遇到了这个,我所要做的就是运行下面的

#ssh-agent bash
#ssh-add ~/.ssh/keypair.pem
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。它将授权信息保留在主机文件之外。 (3认同)