В моей текущей среде все мои Linux-серверы доступны только через хост-бастион, на котором включен MFA.
Я ' Нам удалось заставить Ansible успешно общаться с серверами через бастион, единственная проблема заключается в том, что он устанавливает новое соединение с бастионом для каждого хоста, Это означает, что мне нужно ввести столько ключей MFA, сколько у меня серверов. Плохие времена. : (
Я пробовал возиться с подобными вещами в моей конфигурации ssh, чтобы попытаться заставить работать мультиплексирование:
Host bastion
ControlMaster auto
ControlPath ~/.ssh/ansible-%r@%h:%p
ControlPersist 5m
К сожалению, похоже, что это не работает. У кого-нибудь есть несколько советов, как я могу остановить Ansible re -установление его соединения через мой бастионный хост для каждого хоста, которого он касается?
Спасибо!
Я только что наткнулся на этот пост в блоге о запуске Ansible с бастионным хостом .
Очевидно, вам нужно добавить бастионный хост к управляющему хосту ssh_config
:
Host 10.10.10.*
ProxyCommand ssh -W %h:%p bastion.example.com
IdentityFile ~/.ssh/private_key.pem
Host bastion.example.com
Hostname bastion.example.com
User ubuntu
IdentityFile ~/.ssh/private_key.pem
ControlMaster auto
ControlPath ~/.ssh/ansible-%r@%h:%p
ControlPersist 5m
Отредактируйте ssh_args
в asible.cfg
:
[ssh_connection]
ssh_args = -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m control_path = ~/.ssh/ansible-%%r@%%h:%%p
Это должно скрыть часть конфигурации bastion
. Для части MFA
некоторые пользователи в этом выпуске github утверждают, что можно использовать сеанс ssh в Допустимом, открытом за пределами Допустимого.
Я открываю начальное соединение с хостом, который имеет 2FA, а затем в другом окне запускаю что-то вроде:
asible-playbook thing.yml --ssh-common-args='-o ControlPath=~/.ssh/connshare'
У меня под рукой нет установки бастионного хоста, но я думаю, что эту стратегию стоит попробовать.