Ssh
具有兩個因素身份驗證的 ansible ssh 連接
我正在設置 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):
- 設置 ssh-agent,在需要連接時向代理添加密碼保護密鑰
ansible_password
在 Ansible 保險庫中為每個主機定義- 執行劇本