#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
Шаги, которые я предпринял, чтобы попытаться устранить проблему:
- Добавлен открытый ключ к авторизованным ключам на удаленном хосте
- Добавлен
Host github.com
IdentityFile PATH_TO_PRIVATE_KEY
IdentitiesOnly yes
в файл .ssh/config на удаленном хосте.
- Создал файл ansible.cfg, содержащий:
[defaults]
transport = ssh
sudo_flags = -HE
[ssh_connection]
ssh_args = -o ForwardAgent=yes
- Запустил сборник пьес, как
root
amp;REMOTE_USER
- Снята
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 на удаленном хосте (для всех, кто может столкнуться с этим вопросом в будущем)