存储其他服务器的SSH密钥在哪里? - Ansible

时间:2016-11-29 13:31:14

标签: ansible ansible-playbook

我是Ansible的新手。我设法写了playbooks来设置ApacheTomcat和其他人,都在localhost上。我现在正试图将其移动到其他服务器来测试剧本。

我做了以下事项:
1.在[webservers]中添加了/etc/ansible/hosts部分,并将该实例的公共IP放在那里 我这样调用了ansible-playbook
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook -vvvv -s serverSetup.yml

我的问题:
1.我在哪里存储目标服务器的公共SSH密钥?
2.如何指定使用哪个公钥?

3 个答案:

答案 0 :(得分:1)

ansible使用用户连接到目标计算机。

因此,如果您的用户是ubuntu(-u ubuntu在ansible标志中),则目标计算机上的密钥将为~ubuntu/.ssh/authorized_keys

从你有ansible --help命令

  

- private-key = PRIVATE_KEY_FILE, - key-file = PRIVATE_KEY_FILE使用此文件验证连接

答案 1 :(得分:1)

还有许多其他方法:ansible.cfg,set_fact,environment vars。

ansible.cfg

您可以在项目文件夹中找到一个Ansible Config文件,该文件可以使用以下内容说明要使用的密钥:

private_key_file = /path/to/key/key1.pem

您可以在此处查看ansible.cfg文件的示例:https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg

set_fact

您可以使用playbook中的set_fact模块添加密钥,这可以硬编码如下或模板化:

- name: Use particular private key for this playbook
  set_fact: ansible_private_ssh_key=/path/to/key/key1.pem

http://docs.ansible.com/ansible/set_fact_module.html

环境变量

有关详细信息,请参阅此stackoverflow帖子的答案:

how to define ssh private key for servers fetched by dynamic inventory in files

答案 2 :(得分:0)

  

我在哪里存储目标服务器的公共SSH密钥?

哪里有意义。由于这些是我可以用来直接连接到机器的密钥,因此我通常将它们与其他私钥一起存储在~/.ssh/中。对于我在多台计算机上工作或与其他用户合作的项目,我将它们存储在Ansible Vault中,并有一个提取它们的剧本并将它们存储在本地计算机上。

  

如何指定使用哪个公钥?

group_vars是指定ansible_private_ssh_key的好地方。