Я пытаюсь понять конфигурацию 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
. Просто снял транспорт и он снова работает.
~/.ssh/
dir, the ~/.ssh/config
файл. IdentifyFile
не требуется, если ваши открытые ключи имеют имя по умолчанию (ìd_rsa.pub
, id_ed25519.pub
, id_dsa.pub
)ansible.cfg
файл внутри каталога, где находится playbook (ваш * .yml файл), у этого будет предпочтение по сравнению с вашим по умолчанию /etc/ansible/ansible.cfg
config.~/.ssh/id_rsa
частный файл (у меня есть мой с 0x600
).оффтоп: «В коробке стоит Ubuntu Trusty64 с Mac OS»?!?!