流氓外壳和可靠的配置失败,并具有bitbucket功能 [英] Vagrant shell and ansible provisioning fail with bitbucket

查看:213
本文介绍了流氓外壳和可靠的配置失败,并具有bitbucket功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不能强迫流浪汉配置从bitbucket中克隆私人git repos。

  Vagrant.configure(VAGRANTFILE_API_VERSION)do | config | 
config.ssh.private_key_path =〜/ .vagrant.d / insecure_private_key
config.ssh.forward_agent = true

config.vm.defineaboxdo | abox |
abox.vm.box =ubuntu / trusty32
abox.vm.hostname =abox
abox.ssh.forward_agent = true

abox.vm .networkprivate_network,ip:192.168.50.4
abox.vm.networkforwarded_port,guest:22,host:2233
abox.vm.networkforwarded_port,guest:6340, host:6340
abox.vm.networkforwarded_port,guest:8080,host:6388

abox.vm.provision:shell,
:path => provisioning / ssh_keys.sh,:特权=> false
abox.vm.provision:shell,
:path => provisioning / setup_project.sh
end
end

where ssh_keys I有:

 函数create_key(){
ssh-add -L>> 〜/ .ssh / authorized_keys
ssh-keyscan -t rsa 127.0.0.1> 〜/ .ssh / known_hosts
}

create_key

然后在setup_project中我打电话:

  su  -  vagrant -cssh-keyscan bitbucket.org>> / home / vagrant / .ssh / known_hosts&& \ 
ssh-keyscan github.com>> /home/vagrant/.ssh/known_hosts

echo'Clone bitbucket repo'
su - vagrant -ccd / vagrant&& git clone git@bitbucket.org:someuser / some-project-that-i-have-access-to.git


 权限被拒绝(公钥)。 
==> abox:致命的:无法从远程存储库读取。
==> abox:
==> abox:请确保您拥有正确的访问权限

==> abox:存在存储库。

错误:执行git时发生错误clone -q git@bitbucket.org:someuser / some-project-that-i-have-access-to.git localclone

但是当我把 vagrant ssh 放入框中,然后调用相同的git clone命令 - 一切正常。我也测试了可靠的配置,但问题完全一样。



这里有什么不对?

解决方案

在访客机器上下文中(请参阅文档 )。

因此,您只需要将 setup_project 更改为(您也可以使用< a href =http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1 =nofollow> ssh-keygen ,因此您不会在〜/ .ssh / known_hosts 中出现重复记录):

  ssh-keygen -R bitbucket.org 
ssh-keyscan bitbucket.org>> /home/vagrant/.ssh/known_hosts
ssh-keygen -R github.com
ssh-keyscan github.com>> /home/vagrant/.ssh/known_hosts

echo'Clone bitbucket repo'

cd / vagrant
git clone git@bitbucket.org:someuser / some- project-that-I-have-access-to.git


I can't force vagrant provisioning to clone private git repos from bitbucket. I have vagrant 1.6.3.

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.ssh.private_key_path = "~/.vagrant.d/insecure_private_key"
    config.ssh.forward_agent = true

    config.vm.define "abox" do |abox|
        abox.vm.box = "ubuntu/trusty32"
        abox.vm.hostname = "abox"
        abox.ssh.forward_agent = true

        abox.vm.network "private_network", ip: "192.168.50.4"
        abox.vm.network "forwarded_port", guest: 22, host: 2233
        abox.vm.network "forwarded_port", guest: 6340, host: 6340
        abox.vm.network "forwarded_port", guest: 8080, host: 6388

        abox.vm.provision :shell,
            :path => "provisioning/ssh_keys.sh", :privileged => false
        abox.vm.provision :shell,
            :path => "provisioning/setup_project.sh"
     end 
end

Where in ssh_keys I have:

function create_key() {
    ssh-add -L >> ~/.ssh/authorized_keys
    ssh-keyscan -t rsa 127.0.0.1 > ~/.ssh/known_hosts
}

create_key

Then in setup_project I call:

su - vagrant -c "ssh-keyscan bitbucket.org >> /home/vagrant/.ssh/known_hosts && \
                 ssh-keyscan github.com >> /home/vagrant/.ssh/known_hosts"

echo 'Clone bitbucket repo'
su - vagrant -c "cd /vagrant && git clone git@bitbucket.org:someuser/some-project-that-i-have-access-to.git"

The output is:

Permission denied (publickey).
==> abox: fatal: Could not read from remote repository.
==> abox: 
==> abox: Please make sure you have the correct access rights

==> abox: and the repository exists.

Error: Error while executing git clone -q git@bitbucket.org:someuser/some-project-that-i-have-access-to.git localclone

However when I vagrant ssh into the box and then call the same git clone command maually - everything works. i also tested ansible config but the problem was exactly the same.

What is wrong here?

解决方案

The shell provisioning will run within the context of the guest machine (see docs).

Therefore you should just need to change setup_project to be (you may also want to remove key using ssh-keygen prior to cloning so you don't end up with duplicate records in ~/.ssh/known_hosts):

ssh-keygen -R bitbucket.org
ssh-keyscan bitbucket.org >> /home/vagrant/.ssh/known_hosts
ssh-keygen -R github.com
ssh-keyscan github.com >> /home/vagrant/.ssh/known_hosts

echo 'Clone bitbucket repo'

cd /vagrant
git clone git@bitbucket.org:someuser/some-project-that-i-have-access-to.git

这篇关于流氓外壳和可靠的配置失败,并具有bitbucket功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆