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

时间:2017-02-08 20:49:21

标签: ssh amazon-ec2 ansible

我想使用public 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

这是我的主机文件(请注意,我的实际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 

这是我的剧本:

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

  tasks:
    - name: ping
      ping:

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

ansible-playbook -i ./hosts test.yml

导致以下错误:

fatal: [1.2.3.4] => SSH Error: Permission denied (publickey).
    while connecting to 1.2.3.4:22

我的密钥对没有问题:

$ ssh -i mykeypair.pem ubuntu@1.2.3.4 'whoami'
ubuntu

我做错了什么?

2 个答案:

答案 0 :(得分:10)

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

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

[dashboard]
1.2.3.4 dashboard_domain=my.domain.info 

答案 1 :(得分:1)

我遇到了这个问题,我要做的就是运行以下内容

#ssh-agent bash
#ssh-add ~/.ssh/keypair.pem