Подтвердить что ты не робот

GIT через SSH в Ansible зависает, в то время как ssh-agent forwarding настроен

Я настроил все, что мог найти, но все же клонирование репо из GitHub зависает процесс подготовки.

У меня есть:

  • сервер в known_hosts
  • .ssh/конфигурации

    Host github.com
      ForwardAgent yes
      StrictHostKeyChecking no
    
  • скопированный закрытый ключ

  • открытый ключ находится в authorized_keys
  • команда выполняется как vagrant пользователь
  • воспроизведение:

    - name: Checkout from git
      git: [email protected]:username/repositoryname.git dest=/srv/website
    
4b9b3361

Ответ 1

Чтобы развернуть ответ до ответа, этот конфиг может быть помещен в файл ansible.cfg вместе с вашей книгой. например:.

ansible.cfg

[defaults]
transport = ssh

[ssh_connection]
ssh_args = -o ForwardAgent=yes

Я бы сказал, что лучше сделать это, чем устанавливать в качестве переменной env, поскольку размещение его в файле conf является еще более декларативным, а также минимизирует шаги, необходимые для других людей, с которыми вы можете работать, для перехода с проектом.

Конф. документы: http://docs.ansible.com/intro_configuration.html#the-ansible-configuration-file

Пример файла конфигурации: https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg

Ответ 2

Я хочу поделиться тем, что сработало для меня:

https://groups.google.com/forum/#!msg/ansible-project/u6o-sWynMjo/69UwJfJPq7cJ - Из группы с угрозами Google

Для возможности ssh-add сначала загрузить ssh-ключи в ваш хост-компьютер. Затем используйте "ssh" в качестве типа соединения с включенной переадресацией.

Например:

$ ssh-add  
$ export ANSIBLE_TRANSPORT="ssh"  
$ export  ANSIBLE_SSH_ARGS="-o ForwardAgent=yes"

См. руководство для ssh-add для запуска агента.

Ansible docs для ssh-args: http://docs.ansible.com/intro_configuration.html#ssh-args

Ответ 3

это работает для меня

- name: ensure known hosts
  shell: touch ~/.ssh/known_hosts
- name: remove github.com from known host
  shell: ssh-keygen -R github.com
  # >> instead of > to keep existing known_hosts file
- name: ensure github.com in known host
  shell: ssh-keyscan -H github.com >> ~/.ssh/known_hosts

Ответ 4

Добавьте к ansible.cfg следующий параметр:

[defaults]
sudo_flags=-HE

Ответ 5

В моем случае проблема была в строке репозитория. У меня было частное хранилище bitbucket:

git @tsrs...

но это должно быть:

SSH://git @tsrs...

Обратите внимание на незначительное отсутствие префикса "ssh". Странная часть заключается в том, что если я клонирую репозиторий github без "ssh", он отлично работает!

Ответ 6

У меня была ошибка:

У bitbucket.org есть неизвестный ключ. Установите accept_hostkey в True или вручную добавьте ключ хоста до запуска модуля git

Мне пришлось добавить параметр accept_hostkey в мою команду модуля git:

playbook:

tasks:
    - name: clone
      git: [email protected]:robusta-code/xyz.git
           dest=/app
           accept_hostkey=yes

ansible.cfg

[ssh_connection]
ssh_args = -o ForwardAgent=yes