Eu tinha transport = paramiko
no meu ansible.cfg
para corrigir um bug diferente, mas parece estar causando problemas com ForwardAgent=yes
.
Acabei de remover o transporte e está funcionando novamente.
Estou tentando entender a configuração do GitHub ssh com o Ansible (estou trabalhando no livro Ansible: Up & Running). Estou correndo em dois problemas.
Permissão negada (publickey) -
Quando eu executei pela primeira vez o playbook ansible-playbook mezzanine.yml
, recebi uma permissão negada:
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
Ok, é justo ver que várias pessoas tiveram esse problema. Então eu pulei para o apêndice A ao rodar o Git com o SSH e ele disse para rodar o ssh-agent e adicionar a chave pública id_rsa:
eval 'ssh-agent -s'
ssh-add ~/.ssh/id_rsa
Saída: Identity Added
Corri ssh-agent -l
para verificar e obtive a cadeia longa: 2048 e3:fb:...
Mas recebi a mesma saída. Por isso, verifiquei as documentações do Github sobre gerações de chaves ssh e a solução de problemas que recomendavam a atualização do arquivo de configuração ssh em minha máquina host:
Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
Mas isso ainda fornece o mesmo erro. Então, neste ponto, começo a pensar que é o meu arquivo rsa, o que me leva ao segundo problema.
Problemas de geração de chaves - Tentei gerar um certificado adicional para usar, porque o teste do Github emitiu outro erro "Permissão negada (publickey)".
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
Permission denied (publickey).
Eu segui as instruções do Github do zero e gerou uma nova chave com um nome diferente.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Eu não inseri uma frase secreta e a salvei na pasta .ssh com o nome git_rsa.pub. Eu fiz o mesmo teste e recebi o seguinte:
$ ssh -i ~/.ssh/git_rsa.pub -T [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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).
Eu verifiquei as permissões e fiz um chmod 700
no arquivo e ainda recebo Permission denied (publickey)
. Eu até tentei inserir a chave na minha conta do Github, mas primeiro recebi uma mensagem dizendo que o arquivo de chave precisava começar com ssh-rsa
. Então comecei a pesquisar e hacking. Comecei apenas inserindo a longa string no arquivo (começou com --BEGIN PRIVATE KEY--, mas omiti essa parte depois que ela falhou); no entanto, Github não está aceitando, dizendo que é inválido.
Este é o meu comando Ansible no arquivo YAML:
- name: check out the repository on the host
git: repo={{ repo_url }} dest={{ proj_path }} accept_hostkey=yes
vars:
repo_url: [email protected]:lorin/mezzanine-example.git
Este é o meu arquivo ansible.cfg com o ForwardAgent configurado:
[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
A caixa é um Ubuntu Trusty64 usando o Mac OS. Se alguém pudesse me dar informações sobre as permissões de arquivo e / ou geração de chaves do Github, eu agradeceria.
Eu tinha transport = paramiko
no meu ansible.cfg
para corrigir um bug diferente, mas parece estar causando problemas com ForwardAgent=yes
.
Acabei de remover o transporte e está funcionando novamente.
~/.ssh/
dir, o arquivo ~/.ssh/config
. IdentifyFile
não é necessário se suas chaves públicas estiverem com o nome padrão ( ìd_rsa.pub
, id_ed25519.pub
, id_dsa.pub
) ansible.cfg
dentro do diretório onde está o playbook (seu arquivo * .yml), este terá preferência sobre o padrão /etc/ansible/ansible.cfg
config. ~/.ssh/id_rsa
private (eu tenho o meu com 0x600
). offtopic: "A caixa é um Ubuntu Trusty64 usando o Mac OS"?!?!