Ansible git clone 'Permission Denied', но работает с прямым git клоном

У меня проблема с Ansible. Я настраиваю клонирование git в моей среде с помощью ssh-ключа моего текущего хоста:

- name: Add user Public Key
    copy: 
     src: "/Users/alexgrs/.ssh/id_rsa.pub"
     dest: "/home/vagrant/.ssh/id_rsa.pub"
     mode: 0644

- name: Add user Private Key
    copy: 
     src: "/Users/alexgrs/.ssh/id_rsa"
     dest: "/home/vagrant/.ssh/id_rsa"
     mode: 0600

- name: Clone Repository
  git: 
   repo: repo.git
   dest: /home/vagrant/workspace/
   update: true
   accept_hostkey: true
   key_file: "/home/vagrant/.ssh/id_rsa.pub"

Если я vagrant ssh на Vagrant и выполнить git pull repo, он работает. Но когда я делаю vagrant provision, я получил следующее сообщение об ошибке:

stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

Я почти уверен, что мой публицик не используется приложением vangrant, но я не могу определить, почему.

Вы уже видели эту проблему?

Спасибо.

EDIT: Кажется, что ansible не выполняет клонирование git, но пытается выполнить следующую команду:

/usr/bin/git ls-remote ssh://repo.git -h refs/heads/HEAD

Я попробовал это в своем бродяжном поле, и у меня такое же разрешение, что и проблема.

Ответы

Ответ 1

Копирование секретных ключей IMHO никогда не является хорошей идеей. Лучшим вариантом было бы включить перенаправление агента ssh.

Вы можете сделать это глобально в локальном .ssh/config:

ForwardAgent yes

Или в ansible.cfg:

[ssh_connection]
ssh_args= -A

В любом случае, хотя вам необходимо убедиться, что host/vm принимает перенаправление агента. В удаленном /etc/ssh/sshd_config это должно быть определено:

AllowAgentForwarding yes

Ответ 2

В опции key_file вы используете открытый ключ, когда вы должны использовать закрытый ключ

Источник: http://docs.ansible.com/git_module.html

Ответ 3

CheckOut this url: https://github.com/ansible/ansible-modules-core/issues/184#issuecomment-109653161

В нем объясняется, что URL-адрес repo.git ssh должен быть либо (синтаксис URL):

SSH://git @bitbucket.org/my_user/my_repo.git

или (синтаксис SCP):

git @bitbucket.org: my_user/my_repo.git

Также проверьте свой файл key.file.