SSH代理转发未在所有SSH目标计算机上运行

SSH代理转发未在所有SSH目标计算机上运行,ssh,ansible,ssh-keys,buildbot,ssh-agent,Ssh,Ansible,Ssh Keys,Buildbot,Ssh Agent,/home/buildworker/.ssh/ssh\u config host * IdentityFile /home/buildworker/.ssh/buildworker StrictHostKeyChecking yes ForwardAgent yes 我们正在使用Buildbot在测试和生产环境中构建django应用程序。当开发人员将代码推送到代码存储库时,会触发相应的构建以运行ansible playbook,该playbook将应用程序部署到测试

/home/buildworker/.ssh/ssh\u config

host *
    IdentityFile  /home/buildworker/.ssh/buildworker
    StrictHostKeyChecking  yes
    ForwardAgent yes
我们正在使用Buildbot在测试和生产环境中构建django应用程序。当开发人员将代码推送到代码存储库时,会触发相应的构建以运行ansible playbook,该playbook将应用程序部署到测试或生产环境中。 生产和测试机器的名称由约定标识:
app.domain.com
app.test.domain.com

问题是ansible playbook,尽管buildworker能够通过SSH连接到这两种环境,但playbook的任务之一涉及在目标机器(测试或生产)上使用转发的SSH代理从代码存储库获取代码。此任务在测试环境机器中失败,但在生产环境中工作得非常好。由于我们使用的是
host*
,SSH代理转发应该在所有目标机器上进行

问题是在我们将buildbot主机从debian 9升级到debian 10之后开始的,它在debian 9上运行良好

我尝试了以下方法进行调试: 我从我的机器到buildbot机器执行SSH,并尝试通过成为buildworker用户来运行ansible playbook,并运行playbook:

eval `ssh-agent -s` && ssh-add /home/buildworker/.ssh/buildworker && ansible-playbook -i environments/testing/inventory --user buildworker application.yml

这在生产和测试中都起到了很好的作用。 由于ansible使用root用户运行plabyook,为了确保转发具有正确密钥buildworker的SSH代理,我确保文件
/etc/sudoers
包含

Defaults    env_keep += "SSH_AUTH_SOCK"
结果是ansible playbook以root用户身份在生产环境中成功运行,但未在测试环境中运行。

接下来的工作是在
/etc/ansible/ansible.cfg
文件中添加配置:

[ssh_connection]
ssh_args=-o ControlMaster=auto -o ControlPersist=60s -o ForwardAgent=yes
通过buildworker机器中的配置,ansible playbooks能够支持SSH代理,甚至根用户也可以从代码存储库中获取代码

但是,仍然不清楚SSH代理是否在生产环境中转发,而不添加上述配置