Ansible - Zugang über Bastion mit MFA

9

In meiner aktuellen Umgebung sind alle meine Linux-Server nur über einen Bastion-Host zugänglich, für den MFA aktiviert ist.

Ich habe es geschafft, Ansible dazu zu bringen, erfolgreich mit Servern über die Bastion zu kommunizieren. Das einzige Problem besteht darin, dass für jeden Host eine neue Verbindung zur Bastion hergestellt wird, was bedeutet, dass ich so viele MFA-Schlüssel eingeben muss, wie ich Server habe. Schlechte Zeiten. :(

Ich habe versucht, mit solchen Dingen in meiner SSH-Konfiguration herumzuspielen, um zu versuchen, Multiplexing zum Laufen zu bringen:

Host bastion
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 5m

Leider scheint es nicht zu tun. Hat jemand Tipps, wie ich verhindern kann, dass Ansible für jeden Host, den es berührt, die Verbindung über meinen Bastion-Host wiederherstellt?

Vielen Dank!

Paul Kirby
quelle
Wahrscheinlich ist Ihnen bereits ein Gedanke gekommen, aber ... Wenn Ihr Bastion-Host einen regelmäßigen Anmeldezugriff anstelle einer Paketweiterleitung zulässt und Ihre ansible-Konfiguration kein großes Dateivolumen enthält, können Sie versuchen, Ihre Konfiguration direkt von der Bastion aus auszuführen .
Parthian Shot
Nicht unbedingt vom Bastion-Host, aber es kann sich um jeden Host in derselben Umgebung handeln. Wir haben Ansible Control Hosts eingerichtet. Dies stellt sicher, dass Benutzer keine seltsame Ansible-Konfiguration oder nicht unterstützte Ansible-Version haben. Auch dies verbessert die Geschwindigkeit des Spielbuchs um ein Vielfaches.
Udondan
(Ich weiß nicht, was MFA ist) Haben Sie ForwardAgentin Ihrer SSH-Konfiguration Ihrer Workstation (nicht die Bastion) aktiviert
Baptiste Mille-Mathias

Antworten:

1

Ich bin gerade über diesen Blog-Beitrag gestolpert, als ich Ansible mit einem Bastion-Host ausgeführt habe .

Anscheinend müssen Sie den Bastion-Host zum Kontroll-Host hinzufügen 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

Bearbeiten Sie das ssh_argsin in ansible.cfg:

[ssh_connection]
ssh_args = -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m control_path = ~/.ssh/ansible-%%r@%%h:%%p

Das sollte den bastionTeil der Konfiguration verdecken . Zum MFATeil behauptet ein Benutzer in diesem Github-Problem , dass es möglich ist, eine SSH-Sitzung in Ansible zu verwenden, die außerhalb von Ansible geöffnet ist.

Ich öffne die anfängliche Verbindung zum Host mit 2FA und führe dann in einem anderen Fenster Folgendes aus:

ansible-playbook thing.yml --ssh-common-args='-o ControlPath=~/.ssh/connshare'

Ich habe kein Bastion-Host-Setup zur Hand, aber ich denke, diese Strategie ist einen Versuch wert.

Henrik Pingel
quelle