Ssh 如何在ansible剧本中使用公钥对.pem文件?

Ssh 如何在ansible剧本中使用公钥对.pem文件?,ssh,amazon-ec2,ansible,Ssh,Amazon Ec2,Ansible,我想使用公共aws密钥对.pem文件来运行ansible playbooks。我希望在不更改我的~/.ssh/id\u rsa.pub的情况下执行此操作,并且我无法从当前的~/.ssh/id\u rsa.pub创建新的密钥对,并将其应用于我尝试更改的ec2实例 $ ansible --version ansible 1.9.6 configured module search path = None 这是我的主机文件(请注意,我的实际ip被替换为1.2.3.4)。这可能就是问题所在,因为我

我想使用公共aws密钥对.pem文件来运行ansible playbooks。我希望在不更改我的
~/.ssh/id\u rsa.pub
的情况下执行此操作,并且我无法从当前的
~/.ssh/id\u 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

我做错了什么?

好的小错误,我想主机文件变量中不能有空格,需要定义将变量应用到的组。此主机文件适用于以下所有内容:

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

[dashboard]
1.2.3.4 dashboard_domain=my.domain.info 

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

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

请还原对问题的编辑–带回原始主机文件。这应该是可接受的答案。它将授权信息保留在主机文件之外。