Доступ к git — клону github запрещен (publickey)

#git #github #ssh #ansible

Вопрос:

Я работаю над этим уже около 2 часов и совершенно растерян. Я знаю, что этот вопрос уже задавался и на него отвечали раньше, но я совершенно сбит с толку.

Я пытаюсь клонировать репозиторий github на виртуальную машину с помощью ansible.

Когда я это делаю, я получаю следующую ошибку:

 Warning: Identity file /home/REMOTE_USER/.ssh/id_ed25519 not accessible: No such file or directory
git@github.com: Permission denied (publickey)
fatal: Could not read from remote repository
Please make sure you have the correct access rights and the repository exists.
 

Вот ansible playbook, обрабатывающий клонирование github:

 
- name: Create SSH Key
  hosts: vm
  remote_user: REMOTE_USER

  vars:
    local_keyfile: /home/LOCAL_USER/.ssh/id_ed25519
    public_key: "{{ lookup('file', '/home/LOCAL_USER/.ssh/id_ed25519.pub') }}"
    remote_keyfile: /home/REMOTE_USER/.ssh/id_ed25519
    repository: "git@github.com:GITHUB_USERNAME/GITHUB_REPO.git"

  tasks:

  - name: Add public key to authorized keys
    lineinfile:
      path: /home/REMOTE_USER/.ssh/authorized_keys
      line: "{{ public_key }}"

  - name: Copy SSH Key
    copy:
      src: "{{ local_keyfile }}"
      dest: "{{ remote_keyfile }}"
      owner: REMOTE_USER
      group: REMOTE_USER
      mode: 0600

  - name: Configure SSH to use ansible key for github.com
    template:
      src: templates/ssh_config.j2
      dest: /home/REMOTE_USER/.ssh/config
      owner: REMOTE_USER
      group: REMOTE_USER
      mode: 0644

  - name: Clone repo
    git:
      dest: /home/REMOTE_USER/PATH_TO_REPO
      repo: "{{ repository }}"
      key_file: " {{ remote_keyfile }}"
      clone: yes
      update: yes
 

Шаги, которые я предпринял, чтобы попытаться устранить проблему:

  1. Добавлен открытый ключ к авторизованным ключам на удаленном хосте
  2. Добавлен
 Host github.com
   IdentityFile PATH_TO_PRIVATE_KEY
   IdentitiesOnly yes
 

в файл .ssh/config на удаленном хосте.

  1. Создал файл ansible.cfg, содержащий:
 [defaults]
transport = ssh
sudo_flags = -HE

[ssh_connection]
ssh_args = -o ForwardAgent=yes
 
  1. Запустил сборник пьес, как root amp; REMOTE_USER
  2. Снята Copy SSH Key задача

Я повозился со всеми этими настройками, и ни одна из них не работает. Если я вручную подключусь к виртуальной машине по SSH, я смогу запустить git clone git@github.com:GITHUB_USER/REPO ее, и она будет работать нормально (но запрашивает у меня кодовую фразу для моего SSH-ключа).

REMOTE_USER имеет разрешения на закрытый ключ, каталог, в который клонируется репо, авторизованные ключи, открытый ключ и конфигурационный файл.

Все, что я пробовал, что я прочитал в stackoverflow, на других сайтах stackexchange и в Интернете в целом, до сих пор не работало.

Я был бы признателен за любые рекомендации относительно того, как я могу исправить эту проблему, которая не связана с использованием HTTPS для git-клона.

Ответ №1:

Мне удалось воспроизвести вашу проблему локально, и я обнаружил, что проблема заключается в начальном пробеле в строке

       key_file: " {{ remote_keyfile }}"
 

Если вы удалите пробел после первой цитаты, это должно сработать.

Я должен отметить, что я тестировал локально без кодовой фразы на ключе. Я бы предположил, что парольная фраза может быть проблемой для git модуля.

Комментарии:

1. Спасибо, я попробую это завтра утром!

2. Это сработало! Мне действительно пришлось использовать ключ без парольной фразы, и я смог выполнить клонирование: 1. Без копирования моего открытого ключа в authorized_keys 2. Без настройки ansible.cfg 3. Без добавления пути ключа к файлу .ssh/config на удаленном хосте (для всех, кто может столкнуться с этим вопросом в будущем)