Я реализовал подписку клиента 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, как это сделать. Есть идея?
фатальный: [postgres-01]: НЕДОСТУПНО! => {"изменено": ложь,
"msg": "Ошибка SSH: данные не могут быть отправлены на удаленный хост \" 192.168.90.40 \ ".
Убедитесь, что этот хост доступен по ssh "," недоступен "
На первый взгляд кажется, что Ansible подключается к хосту с именем 192.168.90.40
но ваша конфигурация ssh настроена для хостов, использующих имена хостов, заканчивающиеся на *.internal.headincloud.be
а не ip-адреса.
Проверьте свой инвентарь, возможно, вам нужно убедиться, что Ansible подключается с использованием правильного имени хоста в ssh-соединении, а не ip-адреса, или вам нужно будет сделать вторую строфу в вашем ~ / .ssh / config, соответствующую ip-адресам вы используете.
Вы можете заставить Ansible использовать произвольный закрытый ключ, установив ansible_ssh_private_key_file
переменная. Лучшее место для установки этой переменной зависит от того, на каких серверах необходимо использовать ключ. Если это каждый сервер, вы можете сделать что-то вроде этого:
$ cat group_vars/all/sshkey
ansible_ssh_private_key_file: /Users/jeroenjacobs/.ssh/datacenter-hic-deploy