web-dev-qa-db-ja.com

Ansible-MFA付きの要塞からのアクセス

現在の環境では、MFAが有効になっている要塞ホストを介してのみすべてのLinuxサーバーにアクセスできます。

Ansibleが要塞を介してサーバーと正常に通信できるようになりました。唯一の問題は、各ホストの要塞への新しい接続が確立されることです。つまり、サーバーと同じ数のMFAキーを入力する必要があります。悪い時代。 :(

多重化を機能させるために、ssh設定でこのようなものをいじってみました:

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

残念ながら、それはそれをしていないようです。 Ansibleが接触するすべてのホストについて、要塞ホストを介して接続を再確立するのを停止する方法について、誰かがヒントを得ましたか?

ありがとう!

9
Paul Kirby

私はこれに偶然出くわしました 要塞ホストで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_argsansible.cfgを編集します。

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

これで、構成のbastion部分が隠蔽されます。 MFAの部分について、この github issue の一部のユーザーは、Ansibleの外部で開かれたAnsibleでsshセッションを使用できると主張しています。

2FAを備えたホストへの最初の接続を開き、別のウィンドウで次のように実行します。

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

要塞ホストのセットアップは手元にありませんが、この戦略は試してみる価値があると思います。

1
Henrik Pingel