我已经在我的服务器上实现了 SSH CA 客户端签名。SSHd 在我的服务器上配置了以下指令:
TrustedUserCAKeys /etc/ssh/trusted-users-ca.pem
我修改了我的本地 ssh 配置文件,因此当我连接到我的服务器时,我的证书也被发送:
Host *.internal.headincloud.be
User centos
IdentityFile ~/.ssh/datacenter-hic-deploy
CertificateFile = ~/.ssh/datacenter-hic-deploy-cert.pub
这似乎工作得很好,我能够连接到我的服务器,而无需部署 authorized_keys 文件。
但是,Ansible 无法连接我的服务器:
TASK [Gathering Facts] *********************************************************************************************************************************************************************
fatal: [postgres-01]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to remote host \"192.168.90.40\". Make sure this host can be reached over ssh", "unreachable": true}
就像我已经提到的那样,我可以通过 ssh 进行连接。
我怀疑 Ansible 没有发送证书文件,这就是我无法连接的原因。
我尝试修改我的 ansible.cfg 如下:
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -i ~/.ssh/datacenter-hic-deploy-cert.pub
或者
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -i /Users/jeroenjacobs/.ssh/datacenter-hic-deploy-cert.pub
这些都不起作用。
我找不到告诉 Ansible 如何做到这一点的方法。任何人的想法?
乍一看,Ansible 似乎连接到一个名为的主机
192.168.90.40
,但您的 ssh 配置是为使用以 结尾的主机名而*.internal.headincloud.be
不是 IP 地址的主机设置的。检查您的清单,可能您需要确保 Ansible 在 ssh 连接中使用正确的主机名而不是 IP 地址进行连接,或者您需要在 ~/.ssh/config 中创建与 IP 地址匹配的第二个节你正在使用。
ansible_ssh_private_key_file
您可以通过设置变量使 Ansible 使用任意私钥。设置此变量的最佳位置取决于密钥需要与哪些服务器一起使用。如果是每台服务器,那么您可以执行以下操作: