Ansible-通过堡垒进入带有MFA的堡垒


9

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

我设法使Ansible通过堡垒成功地与服务器通信,唯一的问题是它为每个主机建立了到堡垒的新连接,这意味着我必须输入与服务器数量一样多的MFA密钥。艰难时期。:(

我已经尝试在ssh配置中弄乱这样的东西,以尝试使多路复用工作:

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

不幸的是它似乎没有做到。任何人都获得了一些提示,说明如何阻止Ansible通过我的堡垒主机为它碰到的每个主机重新建立其连接?

谢谢!


可能您已经发生了,但是...如果您的堡垒主机允许常规登录访问,而不仅仅是分组转发,并且您的ansible配置不包含大量文件,则可以尝试直接从堡垒运行配置。
Parthian Shot

不一定来自堡垒主机,但它可以是同一环境中的任何主机。我们有专用的Ansible控制主机。这样可以确保用户没有奇怪的Ansible配置或不受支持的Ansible版本正在运行。这也大大提高了剧本的速度。
udondan '16

(我不知道什么是MFA)您是否已ForwardAgent在工作站的ssh配置中启用了(而不是堡垒)
Baptiste Mille-Mathias

Answers:


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_args在中编辑ansible.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'

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.