总之,当使用Ansible配置我的流浪盒时,在尝试使用ssh克隆我的bitbucket私有仓库时,我会遇到一个神秘的错误。 该错误表明"主机密钥验证失败"。
然而,如果我流浪汉ssh然后运行' git clone '命令,私有仓库成功克隆。这表明ssh转发代理确实在工作,并且vagrant box可以访问与bitbucket repo相关联的私钥。
我在这个问题上已经苦苦挣扎了两天而且我已经失去了理智! 拜托,有人帮帮我!!!
Vagrantfile:
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
任务[常见:克隆bitbucket回购] ************************************* ****
致命:[默认]:失败! => {"更改":false," cmd":" / usr / bin / git clone --origin origin'' / var / www / poo","失败":true," msg":"克隆到' / var / www / poo'。 .. \ n警告:永久添加IP地址的RSA主机密钥' 104.192.143.3'到已知主机列表。\ r \ n许可拒绝(公钥)。\ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n请确认您具有正确的访," rc":128," stderr":"克隆到' / var / www / poo' ... \ n警告:永久添加RSA IP地址的主机密钥' 104.192.143.3'到已知主机列表。\ r \ nPermission denied(publickey)。\ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n请确认您具有正确的访;," stderr_lines":["克隆到' / var / www / poo' ...","警告:永久添加RSA主机IP地址密钥' 104.192.143.3'到已知主机列表。","权限被拒绝(公钥)。","致命:无法从远程存储库中读取。","& #34;,"请确保您拥有正确的访问权限","并且存储库已存在。"]," stdout":"& #34;," stdout_lines":[]}
其他信息:
如果在流浪盒内手动完成克隆工作 ?:
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:选项。我如何引用位于流浪盒外的私钥并使用ssh转发传递?
我的〜/ .ssh里面有不同实体的多个ssh密钥/也许在Ansible配置运行时,git clone命令是不是选择了正确的密钥?
非常感谢任何帮助,感谢您阅读我的噩梦。
答案 0 :(得分:1)
由于您使用become: true
运行整个Playbook,因此SSH密钥转发(以及故障排除)变得无关紧要,因为从您的游戏连接到BitBucket的用户是root
。
以ubuntu
用户身份运行连接到BitBucket的任务:
在become: false
任务中指定Clone bitbucket repo
,
或从播放中删除become: true
并仅将其添加到需要提升权限的任务中。
答案 1 :(得分:1)
这个答案直接来自techraf的有用评论。
注意:此后我一直在处理以下问题,因此这个答案并不能完全解决我的问题: Ansible bitbucket clone repo provisioning ssh error
更新了工作playbook.yml文件:
---
- hosts: all
become: true
tasks:
- name: create /var/www/ directory
file: dest=/var/www/ state=directory owner=ubuntu 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
become: false
git:
repo: git@bitbucket.org:[username]/example.com.git
dest: /var/www/poo
version: master
accept_hostkey: yes