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.