我的团队有一个 Ansible 中心,我们通过它管理多个节点。为此,我们通过 ssh 连接到中心,并通过 sudo 连接到共享的“ansible”用户。此用户有一个 ssh 密钥对,所有节点的 authorized_keys 文件中都有该密钥对。
这是可行的,但这意味着每个人都可以随时访问所有节点。
我想要的是某种方法,让我们可以限制用户,使他们只能访问某些节点。我们可以根据需要从每个节点的 authorized_keys 中添加/删除个人密钥,但这似乎需要管理很多。我想要一种易于管理的方法,以便我们可以快速授权/取消授权不同节点的用户。
有人有这样的策略吗?我打算使用签名的 ssh 密钥授予临时访问权限,但尚未真正探索过。
答案1
您有 Ansible - 因此有一个快速的解决方案 - 使用 Ansible...
如果集线器上的所有用户都有一个公钥,则可以使用该公钥和 ansible 用户将用户公钥发布到目标主机。
如果您想限制每台机器的访问,您可以配置每个主机或主机组的用户列表,并仅将该公钥填充到该组中的主机。此外,从目标主机中删除用户也很容易,可以使用映射和模板(而不是附加公钥)或构建负面列表。
因此,用户可以直接从集线器跳转到目标机器,而无需 Ansible 用户。