Я пытаюсь понять конфигурацию ssh GitHub с помощью Ansible (я работаю над книгой Ansible: Up & Running). У меня две проблемы.
Permission denied (publickey) -
Когда я впервые запустил playbook ansible-playbook mezzanine.yml
, мне было отказано в разрешении:
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, я был бы признателен.
~/.ssh/
dir, файл ~/.ssh/config
. IdentifyFile
не требуется, если ваши открытые ключи имеют имя по умолчанию (md_rsa.pub
, id_ed25519.pub
, id_dsa.pub
)/etc/ansible/ansible.cfg
.~/.ssh/id_rsa
(у меня есть мой с 0x600
).offtopic: "Ящик - Ubuntu Trusty64 с использованием Mac OS" ?!?!
. У меня был transport = paramiko
в моем ansible.cfg
, чтобы исправить другую ошибку, но, похоже, вызывает проблемы с ForwardAgent = yes
.
Просто снял транспорт, и он снова работает.