Github 上的 Ansible:权限被拒绝(Publickey)

Github 上的 Ansible:权限被拒绝(Publickey)

我正在尝试使用 Ansible 了解 GitHub ssh 配置(我正在研究《Ansible:Up & Running》一书)。我遇到了两个问题。

权限被拒绝(公钥)- 当我第一次运行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 关于使用 SSH 运行 Git 的内容,它说运行 ssh-agent 并添加 id_rsa 公钥:

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

输出:Identity Added我运行ssh-agent -l检查并得到了长字符串:2048 e3:fb:...但我得到了相同的输出。因此,我查看了有关 ssh 密钥生成和故障排除的 Github 文档,其中建议更新主机上的 ssh 配置文件:

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

但这仍然会出现相同的错误。因此,此时,我开始认为这是我的 rsa 文件,这引出了我的第二个问题。

密钥生成问题- 我尝试生成一个额外的证书来使用,因为 Github 测试抛出了另一个“权限被拒绝(公钥)”错误。

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 "[email protected]"

我没有输入密码,而是将其保存到名为 git_rsa.pub 的 .ssh 文件夹中。我运行了相同的测试,得到了以下结果:

$ 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).

我检查了权限并对chmod 700文件进行了操作,但仍然得到Permission denied (publickey)。我甚至试图将密钥输入到我的 Github 帐户中,但首先收到一条消息,密钥文件需要以 开头ssh-rsa。所以我开始研究和破解。一开始只是在文件中输入长字符串(它以 --BEGIN PRIVATE KEY-- 开头,但失败后我省​​略了该部分);但是,Github 不接受它,说它无效。

这是我在 YAML 文件中的 Ansible 命令:

- 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

这是我配置了 ForwardAgent 的 ansible.cfg 文件:

[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

该盒子是使用 Mac OS 的 Ubuntu Trusty64。如果有人能告诉我文件权限和/或 Github 密钥生成,我将不胜感激。

答案1

transport = paramiko本来ansible.cfg想修复另一个错误,但似乎导致了问题ForwardAgent=yes。只需删除传输,它就可以再次工作了。

答案2

  1. 您需要重新排序~/.ssh/目录、~/.ssh/config文件。如果您的公钥是默认名称( ,,) ,则IdentifyFile不需要ìd_rsa.pubid_ed25519.pubid_dsa.pub
  2. 检查目录中是否有一个ansible.cfg文件,其中包含剧本(您的 *.yml 文件),该文件将优先于您的默认/etc/ansible/ansible.cfg配置。
  3. 这些权限适用于文件~/.ssh/id_rsa私有文件(我有0x600)。

题外话:“该盒子是使用 Mac OS 的 Ubuntu Trusty64”?!?!

相关内容