Ansible git clone'Permission Denied'但直接git clone工作

时间:2015-06-10 16:04:57

标签: git ansible

我对Ansible有一个令人不安的问题。我使用当前主机的ssh键在我的环境中设置了一个git克隆:

- 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上vagrant ssh并执行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规定使用,但我无法发现原因。

你有没有看到这种问题?

谢谢。

修改 似乎ansible没有做一个git clone但是正在尝试以下命令:

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

我在我的流浪盒中尝试过,并且我有同样的许可拒绝问题。

3 个答案:

答案 0 :(得分:12)

复制私钥恕我直言永远不是一个好主意。更好的选择是启用ssh agent forwarding

您可以在本地.ssh/config中全局执行此操作:

ForwardAgent yes

或在ansible.cfg

[ssh_connection]
ssh_args= -A

在任何情况下,您都需要确保host / vm接受代理转发。在远程/etc/ssh/sshd_config中,必须定义:

AllowAgentForwarding yes

答案 1 :(得分:2)

在key_file选项中,当您使用私钥时,您正在使用公钥

来源:http://docs.ansible.com/git_module.html

答案 2 :(得分:1)

CheckOut this GitHub issue

它解释了repo.git ssh clone url应该是(URL语法):

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

或(SCP语法):

git@bitbucket.org:my_user/my_repo.git

检查key_file