Ошибка ss при инициализации клонов битбакетов

Таким образом, при подготовке моего бродячего ящика с помощью Ansible, я получаю загадочную ошибку при попытке клонировать мое частное хранилище с помощью ssh. В сообщении об ошибке указано, что "Проверка ключа хоста не удалась".

Тем не менее, если я перейду ssh, а затем выполню команду "git clone", частное хранилище успешно клонируется. Это указывает на то, что агент пересылки ssh действительно работает, и бродячее окно может получить доступ к моему личному ключу, связанному с репозиторием Bitbucket.

Я боролся в течение двух дней по этому вопросу и схожу с ума! Пожалуйста, кто-нибудь, помогите мне!!!

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] *******************************************

фатальный: [по умолчанию]: СБОЙ! => {"updated": false, "cmd": "/usr/bin/git clone - происхождение происхождения" /var/www/poo", "fail ": true, "msg": "Cloning into "/var/www/poo'...\n Предупреждение: постоянное добавление ключа хоста RSA для IP-адреса'104.192.143.3'в список известных хостов.\r\n Ответ запрещен (publickey).\r\nfatal: Не удалось прочитать из удаленного репозитория.\n\n Убедитесь, что у вас есть правильные права доступа \ n, а репозиторий существует.", "rc": 128, "stderr": " Клонирование в '/var/www/poo'...\nWarning: Постоянно добавлен ключ хоста RSA для IP-адреса "104.192.143.3" в список известных хостов. \ R \ n Ответ запрещен (publickey). \ R \ nfatal: Не удалось прочитать из удаленного репозитория. \ N \ n Пожалуйста, убедитесь, что вы имеют правильные права доступа \ n, и репозиторий существует. \ n "," stderr_lines ": [" Клонирование в '/ var / www / poo'... "," Предупреждение: постоянное добавление ключа хоста RSA для IP-адреса '104.192.143.3 'к списку известных хостов. "," В доступе отказано (publickey).", " Fatal: Не удалось прочитать из удаленного репозитория.", "", " Пожалуйста, убедитесь, что y у вас есть правильные права доступа "," и репозиторий существует."], "stdout": "", "stdout_lines": []}

Дополнительная информация:

  • ssh-add -l на моей машине содержит соответствующий ключ репозитория bitbucket.
  • ssh-add -l внутри поля vagrant также содержит соответствующий ключ репозитория bitbucket (через ssh-forwarding).

Все же клонирование работает, если сделано вручную в бродячей коробке ?:

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 и передается через ssh forwarding?

У меня есть несколько ключей ssh ​​для разных сущностей внутри моего ~/.ssh/ Возможно, команда git clone при запуске Ansible Provisioning не выбирает правильный ключ?

Любая помощь очень ценится и спасибо за чтение моего кошмара.

2 ответа

Решение

Так как вы запускаете всю книгу с become: trueПереадресация ключей SSH (а также устранение неполадок) становится неактуальной, поскольку пользователь, подключающийся к BitBucket из вашей игры, root,

Запустите задачу подключения к BitBucket как ubuntu пользователь:

  • либо с указанием become: false в Clone bitbucket repo задачи),

  • или удаление become: true Из игры и добавление ее только к задачам, которые требуют повышенных разрешений.

Этот ответ приходит прямо из полезных комментариев techraf.

  • Я изменил владельца каталога /var/www с www-data на ubuntu (имя пользователя, которое я использую для входа через ssh).
  • Я также добавил "стать: ложным" над задачей git.

ПРИМЕЧАНИЕ. С тех пор я столкнулся со следующей проблемой, поэтому этот ответ не полностью решает мои проблемы: Ошибка ssh при инициализации репозитория клонов Bubucket.

Обновлен рабочий файл 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
Другие вопросы по тегам