2015-09-28 228 views
3

我正在嘗試使用ansible和vagrant設置開發環境。現在我堅持從bitbucket克隆git repo。ansible git clone權限被拒絕問題

下面是Vagrantfile和可靠的設置以及我嘗試過的東西。

在我Vagrantfile我有config.ssh.forward_agent = true

在我deploy.yml我上面

- name: ensure bitbucket is a known host 
    lineinfile: 
    dest: /home/vagrant/.ssh/known_hosts 
    create: yes 
    state: present 
    line: "{{ lookup('pipe', 'ssh-keyscan -p 443 -t rsa altssh.bitbucket.org') }}" 
    regexp: "^altssh\\.bitbucket\\.org" 
    sudo_user: "vagrant" 
    tags: known_hosts 

- name: checkout opentest repo 
    git: > 
    dest="/home/vagrant/ot/" 
    repo="ssh://[email protected]:443/muhammadammar/opentest/" 
    version="master" 
    accept_hostkey=yes 
    sudo_user: "vagrant" 
    tags: checkout 

第一任務添加到位桶的公鑰到/home/vagrant/.ssh/known_hosts

下面是輸出的時候ansible嘗試籤回購

<127.0.0.1> ESTABLISH CONNECTION FOR USER: vagrant 
<127.0.0.1> REMOTE_MODULE git dest="/home/vagrant/ot/" repo="ssh:********@altssh.bitbucket.org:443/muhammadammar/opentest/" version=master accept_hostkey=yes 
<127.0.0.1> EXEC ssh -C -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/ammar/.ansible/cp/%h-%r" -o StrictHostKeyChecking=no -o Port=2222 -o IdentityFile="/Users/ammar/.vagrant.d/insecure_private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 127.0.0.1 /bin/sh -c 'sudo -k && sudo -HE -S -p "[sudo via ansible, key=vwkfotuvzzmllxvxptkgehjzdlqygoez] password: " -u vagrant /bin/sh -c '"'"'echo BECOME-SUCCESS-vwkfotuvzzmllxvxptkgehjzdlqygoez; LANG=C LC_CTYPE=C /usr/bin/python'"'"'' 
failed: [default] => {"cmd": "/usr/bin/git ls-remote 'ssh:********@altssh.bitbucket.org:443/muhammadammar/opentest/' -h refs/heads/master", "failed": true, "rc": 128} 
stderr: RSA host key for IP address '131.103.20.174' not in list of known hosts. 
Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

msg: RSA host key for IP address '131.103.20.174' not in list of known hosts. 
Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

FATAL: all hosts have already failed -- aborting 

      to retry, use: --limit @/Users/ammar/dev.retry 

default     : ok=1 changed=0 unreachable=0 failed=1 

Ansible failed to complete successfully. Any error output should be 
visible above. Please fix these errors and try again. 

在我主我已經加了我的私鑰的SSH認證代理。我可以在主機和流浪盒上看到使用ssh-add -l的私鑰身份。

在顛沛流離的盒子,我可以成功地克隆使用git clone ssh://[email protected]:443/muhammadammar/opentest ot

我不知道是什麼問題回購。任何人都可以幫助解決這個問題。

編輯

即使下面不ansible

shell: "git clone ssh://[email protected]:443/muhammadammar/opentest/ /home/vagrant/omp/" 
+0

您是否嘗試了http://stackoverflow.com/a/30775053/4296747的建議? –

+0

@FrédéricHenri無法正常工作 – MA1

回答

1

能工作,對流浪的盒子成功運行git clone ...是不夠的。

的方式我認爲,正在發生的事情是:

  • ansible試圖打開一個SSH連接流浪漢箱爲用戶「流浪者」(User=vagrant),並提供身份文件:-o IdentityFile="/Users/ammar/.vagrant.d/insecure_private_key"
  • 執行/bin/sh -c 'sudo -k && sudo -HE -S -p "[sudo via ansible, key=vwkfotuvzzmllxvxptkgehjzdlqygoez] password: " -u vagrant /bin/sh -c '"'"'echo BECOME-SUCCESS-vwkfotuvzzmllxvxptkgehjzdlqygoez; LANG=C LC_CTYPE=C /usr/bin/python'"'"'
  • 試圖git clone使用用戶 '********'(ssh:********@altssh.bitbucket.org:443/...)

喲你應該可以這樣做,是你嗎?

如果不是,那麼原因可以是許多例如

  • /Users/ammar/.vagrant.d/insecure_private_key對於用戶vagrant不是正確的文件。
  • vagrant不是一個sudoer。 /以上所有步驟輸出
  • [email protected]用戶的密鑰不********@altssh.bitbucket.org

註冊你會知道你已經通過日誌看了之後正確的原因。

PS:使用sudo_user: vagrant似乎是多餘的,如果您已經在使用同一個用戶執行ssh的話。我可以想出爲什麼可以這樣做的一些原因,但至少在這裏是多餘的。

+0

感謝您的回覆,但不幸的是,我不知道上面的任何內容,因爲這是我第一次尋找安全和流浪。我從來沒有想過,爲git操作正確配置vagrant box是複雜的,需要關於很多設置的知識。 – MA1

+0

@ MA1 :-)總有第一次.. – Kashyap

0

我有同樣的問題。你的腳本中是否使用「sudo:yes」?如果你是,那麼根用戶需要訪問回購站,而不是流浪用戶。

將root用戶的公鑰文件添加到Bitbucket帳戶,你應該沒問題。

或者,您可以通過普通用戶進行結賬。

在任何情況下,訪問vagrant內repo的用戶的公鑰都需要能夠訪問Bitbucket。