具有双因素身份验证的 ansible ssh 连接

具有双因素身份验证的 ansible ssh 连接

我正在设置 ansible 来管理整个服务器场。我的方法如下:

允许用户连接到所有服务器,并使用强大的 RSA 密钥、密码保护和用户密码来保护其连接。

为了尽可能地自动化该过程,我希望在保险库文件或加密字符串中传递 RSA 密码和用户密码。

当我在客户端设置两种身份验证方法(公钥+用户密码)并仅通过 ping 到测试服务器进行测试(手动传递密码)时,系统会提示我输入 RSA 密码但没有密码,显然剧本的执行会失败。

如果我仅设置用户密码作为身份验证方法,剧本就会正常执行。

如果我仅使用其密码验证设置 RSA 密钥,则工作不会结束,这是我屏幕上至少 30 分钟的输出(研究、喝咖啡的时间,..)

PLAY [all] ******************************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************************
Enter passphrase for key '/home/users/<user_name>/.ssh/id_rsa': 
ok: [<test_server_ip_address>]

TASK [include vars] *********************************************************************************************************************************************************
ok: [<test_server_ip_address>]

TASK [test connection] ******************************************************************************************************************************************************

还有其他东西。

我正在尝试执行的剧本是这个

---
- hosts: all
  tasks:
    - name: test connection
      ping:

执行playbok的下一个命令是:

ansible-playbook -i ansible_hosts/test_hosts.yml playbooks/ping.yml

内容test_host.yml

all:
  hosts:
    <test_server_ip_address>

我的问题是:

可以为 ansible 设置双因素身份验证吗?如果可以,有人可以给我指点迷津吗?

答案1

我怀疑您是否可以使用来自 Ansible vault 的 ssh 密钥密码,但一般的双因素工作流程如下:

在服务器端,使用以下方式启用双因素身份验证:

AuthenticationMethods "publickey,password"

sshd_config

在客户端(Ansible):

  1. 设置 ssh-agent,在需要连接时向代理添加受密码保护的密钥
  2. ansible_password在 Ansible Vault 中为每个主机定义
  3. 运行剧本

相关内容