如何在ansible git模块中使用远程机器的SSH密钥

时间:2015-04-19 01:05:40

标签: git ssh ansible ssh-keys ansible-playbook

我一直试图让Ansible配置远程计算机,我希望远程计算机能够设置自己的密钥,并且能够从Bitbucket克隆git存储库。

用户已设置,拥有自己的id_rsa.pub,并且该密钥已在bitbucket中注册。

但是,当我使用Ansible Git模块时,看起来模块总是试图使用运行playbook的机器上的键。

如何让git模块使用远程机器上的id_rsa.pub?

相关的任务是:

- name: be sure prom-king has an up-to-date clone of its own repository
  git:
    repo: "ssh://ddcrnd@bitbucket.org/prom-king.git"
    dest: /home/promking/prom-king
    accept_hostkey: yes
    clone: yes
    key_file: /home/promking/.ssh/id_rsa.pub
    update: yes

相关广告资源是

# inventory file for use with the vagrant box in the testing directory.
[prom-king]
192.168.168.192 ansible_ssh_host=127.0.0.1 ansible_sudo=true ansible_connection=ssh  ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=testing/.vagrant/machines/default/virtualbox/private_key

3 个答案:

答案 0 :(得分:28)

这是我使用远程服务器上设置的密钥文件从Github部署的方式。如果keyfile的{​​{1}}参数不起作用,那么您的剧本就会出现问题:

git

答案 1 :(得分:9)

如果我理解正确,您可以 - 或者想 - 将您的私钥部署到远程计算机,以便克隆存储库。相信你应该使用密钥转发。在.ssh/config设置此内容:

ForwardAgent yes

或者,如果您想将此限制为Ansible,可以在ansible.cfg

中进行定义
[ssh_connection]
ssh_args= -A

答案 2 :(得分:0)

一个有用的说明:对于使用 github 的任何人(我假设也适用于 gitlab 等) - 确保您以 SSH 形式正确提供 URL。如果提供了密钥文件,但您提供了 HTTPS URL,它只会悄悄地忽略密钥并(可能)挂起等待输入用户名和密码。