我对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
我在我的流浪盒中尝试过,并且我有同样的许可拒绝问题。
答案 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选项中,当您使用私钥时,您正在使用公钥
答案 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
。