Ansible - 通过 Bastion 和 MFA 进行访问

Ansible - 通过 Bastion 和 MFA 进行访问

在我当前的环境中,所有 Linux 服务器只能通过启用了 MFA 的堡垒主机访问。

我已经设法让 Ansible 通过堡垒成功与服务器通信,唯一的问题是它为每个主机建立了到堡垒的新连接,这意味着我必须输入与服务器数量相同的 MFA 密钥。糟糕的时刻。 :(

我尝试在我的 ssh 配置中摆弄类似这样的内容以尝试使多路复用正常工作:

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

不幸的是,它似乎没有这样做。有人能告诉我如何阻止 Ansible 通过我的堡垒主机为其接触的每个主机重新建立连接吗?

谢谢!

答案1

我刚刚偶然发现了这个关于使用堡垒主机运行 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 问题声称可以在 Ansible 中使用在 Ansible 之外打开的 ssh 会话。

我打开与具有 2FA 的主机的初始连接,然后在另一个窗口中运行如下命令:

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

我手头没有堡垒主机设置,但我认为这个策略值得一试。

相关内容