Ssh

具有兩個因素身份驗證的 ansible ssh 連接

  • December 20, 2017

我正在設置 ansible 來管理整個伺服器場。我的方法如下:

允許使用者連接到使用重 RSA 密鑰、密碼保護和使用者密碼保護其連接的所有伺服器。

為了盡可能地自動化該過程,我想將 RSA 密碼片語和使用者密碼傳遞到 Vault 文件或加密字元串中。

如果我在客戶端中設置了兩種身份驗證方法(公鑰+使用者密碼),我在測試(手動傳遞密碼)時只對測試伺服器進行 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 設置雙因素身份驗證?如果是,任何人都可以將我重定向到正確的方向嗎?

我懷疑您是否可以使用 Ansible vault 中的 ssh 密鑰密碼,但一般的 2 因素工作流程如下:

在伺服器端,啟用 2-factor Auth with

AuthenticationMethods "publickey,password"

sshd_config.

在客戶端(Ansible):

  1. 設置 ssh-agent,在需要連接時向代理添加密碼保護密鑰
  2. ansible_password在 Ansible 保險庫中為每個主機定義
  3. 執行劇本

引用自:https://serverfault.com/questions/888995