我想使用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
我做错了什么?
答案 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