Ssh
如果密鑰被拒絕,如何讓 Ansible 使用密碼?
我的新伺服器實例配置為通過 ssh 使用密碼登錄 root。我希望我的 Ansible 劇本將其重新配置為使用密鑰,並在首次執行時禁用使用密碼的 root 登錄,所以我需要這樣的東西:
嘗試使用密鑰登錄
如果無法使用密鑰登錄:
- 用密碼登錄
- 將密鑰添加到授權密鑰
- 使用密碼禁用root登錄
- 可選擇使用密鑰重新連接
做其他任務
我怎樣才能做到這一點?
編輯:要清楚,我不是在問如何添加密鑰或禁用 root,這只是為了上下文。我在問如果無法使用密鑰進行身份驗證,如何回退到密碼。使用
--ask-pass
或ansible_ssh_pass
設置,Ansible 甚至不會嘗試使用公鑰認證
您可以嘗試該
PreferredAuthentications
選項,將其設置為publickey,password
. 預設按此順序包括這些,以及其他選項,因此 ansible 可能正在設置它。通過-o
或客戶端添加它ssh_config
可能會阻止這種情況。您也許可以使用包裝腳本。例如,使用 this in
key_or_password.sh
和pass.sh
提供密碼的 a,執行bash key_or_password.sh root@host
將嘗試使用 publickey,然後是非互動式密碼登錄。export DISPLAY=dummy:0 export SSH_ASKPASS=$PWD/pass.sh exec setsid ssh -v -o 'PreferredAuthentications publickey,password' "$@"
日誌指示哪個方法成功,例如
debug1: Authentication succeeded (publickey).