Ansible git克隆';拒绝许可';但是直接git克隆可以工作

Ansible git克隆';拒绝许可';但是直接git克隆可以工作,git,ansible,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/alexg

我和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 ssh
在vagrant上执行
git pull repo
它就可以工作。但是当我做了一个流浪规定时,我得到了以下错误信息:

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克隆,但正在尝试以下命令:

/usr/bin/git ls remotessh://repo.git -h参考/头部/头部


我在我的vagrant box中尝试了它,我也遇到了同样的权限被拒绝的问题。

在密钥文件选项中,当您应该使用私钥时,您正在使用公钥


来源:

复制私钥从来都不是一个好主意。更好的选择是启用

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

ForwardAgent yes
或者在您的
ansible.cfg
中:

[ssh_connection]
ssh_args= -A
但在任何情况下,您都需要确保主机/vm接受代理转发。在远程
/etc/ssh/sshd_config
中,必须定义:

AllowAgentForwarding yes
结帐

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

或(SCP语法):


也检查您的
密钥文件。

我尝试了私钥,但它不起作用。我用新发现编辑了我的问题。您使用的是什么版本的Ansible?您可能遇到了问题和中提到的相同问题(SSH代理转发)。如果您使用的是Vagrant~1.4.x(比如Ubuntu14.04 repos中的软件包),那么您可能会通过将Ansible和Vagrant更新到1.7.x版本而得到一些缓解。(一个Ruby库依赖项似乎是。)从vagrantup.com更新到最新的Vagrant.deb包为我解决了这个问题。似乎您正在尝试用公钥克隆存储库:
key\u文件:“/home/Vagrant/.ssh/id\u rsa.pub”
。它应该是您的私钥。请注意,AllowAgentForwarding通常默认为“是”,但最好检查它是否因某种原因被禁用。
ssh://git@bitbucket.org/my_user/my_repo.git
git@bitbucket.org:my_user/my_repo.git