Назад | Перейти на главную страницу

Ansible с Github: в доступе отказано (Publickey)

Я пытаюсь понять конфигурацию ssh GitHub с помощью Ansible (я работаю над книгой Ansible: Up & Running). У меня две проблемы.

В разрешении отказано (публичный ключ) - Когда я впервые запустил ansible-playbook mezzanine.yml playbook, мне отказано в разрешении:

failed: [web] => {"cmd": "/usr/bin/git ls-remote '' -h refs/heads/HEAD", "failed": true, "rc": 128}
stderr: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

msg: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

FATAL: all hosts have already failed -- aborting

Хорошо, честно, я вижу, что у нескольких человек была эта проблема. Итак, я перешел к приложению A при запуске Git с SSH, и в нем было сказано запустить ssh-agent и добавить открытый ключ id_rsa:

eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa

Вывод: Identity AddedЯ побежал ssh-agent -l чтобы проверить и получил длинную строку: 2048 e3:fb:... Но у меня такой же результат. Поэтому я проверил документацию Github о генерации ключей ssh ​​и устранении неполадок, в которых рекомендовалось обновить файл конфигурации ssh на моем хост-компьютере:

Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile ~/.ssh/id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes

Но это все равно дает ту же ошибку. Итак, на этом этапе я начинаю думать, что это мой файл rsa, что приводит меня ко второй проблеме.

Ключевые вопросы генерации - Я попытался создать дополнительный сертификат для использования, потому что тест Github выдал еще одну ошибку «Permission denied (publickey)».

Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
Permission denied (publickey).

Я выполнил инструкции Github с нуля и создал новый ключ с другим именем.

ssh-keygen -t rsa -b 4096 -C "me@example.com"

Я не ввел кодовую фразу и сохранил ее в папке .ssh с именем git_rsa.pub. Я провел тот же тест и получил следующее:

$ ssh -i ~/.ssh/git_rsa.pub -T git@github.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/antonioalaniz1/.ssh/git_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: ~/.ssh/github_rsa.pub
Permission denied (publickey).

Я проверил разрешения и сделал chmod 700 в файле, и я все еще получаю Permission denied (publickey). Я даже попытался ввести ключ в свою учетную запись Github, но сначала получил сообщение о том, что файл ключа должен начинаться с ssh-rsa. Итак, я начал исследовать и взламывать. Началось с простого ввода длинной строки в файл (она начиналась с --BEGIN PRIVATE KEY--, но я пропустил эту часть после того, как она потерпела неудачу); однако Github не принимает его, говоря, что он недействителен.

Это моя команда Ansible в файле YAML:

- name: check out the repository on the host
  git: repo={{ repo_url }} dest={{ proj_path }} accept_hostkey=yes

  vars:
    repo_url: git@github.com:lorin/mezzanine-example.git

Это мой файл ansible.cfg с настроенным ForwardAgent:

[defaults]
hostfile = hosts
remote_user = vagrant
private_key_file = .vagrant/machines/default/virtualbox/private_key
host_key_checking = False

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o ForwardAgent=yes

Коробка представляет собой Ubuntu Trusty64 с Mac OS. Если бы кто-нибудь мог рассказать мне о разрешениях на файлы и / или генерации ключей Github, я был бы признателен.

я имел transport = paramiko в моем ansible.cfg чтобы исправить другую ошибку, но, похоже, вызывает проблемы с ForwardAgent=yes. Просто снял транспорт и он снова работает.

  1. Вам нужно изменить порядок ~/.ssh/ dir, the ~/.ssh/config файл. IdentifyFile не требуется, если ваши открытые ключи имеют имя по умолчанию (ìd_rsa.pub, id_ed25519.pub, id_dsa.pub)
  2. Проверьте, есть ли у вас ansible.cfg файл внутри каталога, где находится playbook (ваш * .yml файл), у этого будет предпочтение по сравнению с вашим по умолчанию /etc/ansible/ansible.cfg config.
  3. Разрешения для файла ~/.ssh/id_rsa частный файл (у меня есть мой с 0x600).

оффтоп: «В коробке стоит Ubuntu Trusty64 с Mac OS»?!?!