【发布时间】:2017-11-17 13:01:19
【问题描述】:
总之,当我使用 Ansible 配置我的 vagrant box 时,我在尝试使用 ssh 克隆我的 bitbucket 私有 repo 时遇到了一个神秘的错误。 该错误指出“主机密钥验证失败”。
然而,如果我 vagrant ssh 然后运行 'git clone' 命令,私有 repo 会成功克隆。这表明 ssh 转发代理确实在工作,并且 vagrant box 可以访问我与 bitbucket 存储库关联的私钥。
我已经在这个问题上苦苦挣扎了两天,我失去了理智! 请有人帮帮我!!!
流浪文件:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "192.168.33.10"
config.ssh.forward_agent = true
# Only contains ansible dependencies
config.vm.provision "shell",
inline: "sudo apt-get install python-minimal -y"
# Use ansible for all provisioning:
config.vm.provision "ansible" do |ansible|
ansible.playbook = "provisioning/playbook.yml"
end
end
我的playbook.yml如下:
---
- hosts: all
become: true
tasks:
- name: create /var/www/ directory
file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0755
- name: Add the user 'ubuntu' to group 'www-data'
user:
name: ubuntu
shell: /bin/bash
groups: www-data
append: yes
- name: Clone bitbucket repo
git:
repo: git@bitbucket.org:gustavmahler/example.com.git
dest: /var/www/poo
version: master
accept_hostkey: yes
错误信息:
vagrant provision
TASK [common : Clone bitbucket repo] *************************************** ****
致命:[默认]:失败! => {"changed": false, "cmd": "/usr/bin/git clone --origin origin '' /var/www/poo", "failed": true, "msg": "克隆到 '/ var/www/poo'...\n警告: 将 IP 地址“104.192.143.3”的 RSA 主机密钥永久添加到已知主机列表中。\r\n权限被拒绝(公钥)。\r\n致命: 无法读取来自远程存储库。\n\n请确保您拥有正确的访问权限\n并且存储库存在。", "rc": 128, "stderr": "正在克隆到 '/var/www/poo'...\n警告: 将 IP 地址“104.192.143.3”的 RSA 主机密钥永久添加到已知主机列表中。\r\n权限被拒绝(公钥)。\r\n致命: 无法从远程存储库读取。\n\n请确保具有正确的访问权限\n并且存储库存在。\n", "stderr_lines": ["正在克隆到 '/var/www/poo'...", "警告:永久添加 IP 地址 '104.192 的 RSA 主机密钥.143.3' 到已知主机列表。”、“权限被拒绝(公钥)。”、“致命:无法从远程存储库读取。”、“”、“请确保 y你有正确的访问权限", "并且存储库存在。"], "stdout": "", "stdout_lines": []}
其他信息:
- 我机器上的 ssh-add -l 确实包含相关的 bitbucket 存储库密钥。
- ssh-add -l vagrant box 内也包含相关的 bitbucket repo 密钥(通过 ssh-forwarding)。
如果在 vagrant box 中手动完成,克隆仍然有效?:
vagrant ssh
git clone git@bitbucket.org:myusername/myprivaterepo.com.git
Then type "yes" to allow the RSA fingerprint to be added to ~/.ssh/known_hosts (as its first connection with bitbucket)
可能的解决方案?
我在 Ansible 文档中看到有一个 key_file: 选项。如何引用位于 vagrant box 外部并使用 ssh 转发传入的私钥?
我的 ~/.ssh/ 中确实有多个用于不同实体的 ssh 密钥,也许通过 Ansible 配置运行时 git clone 命令没有选择正确的密钥?
非常感谢任何帮助,感谢您阅读我的噩梦。
【问题讨论】:
标签: ssh vagrant ansible bitbucket vagrant-provision