2016-07-25 54 views
1

-vvv我得到以下日誌運行劇本given in this answer隱含SSH連接參數在Ansible

<192.168.1.109> SSH: EXEC ssh -C -q -o PasswordAuthentication=yes 
    -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 
    -o ControlMaster=auto -o ControlPersist=60s 
    -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no 
    -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
    -o PasswordAuthentication=no -o ConnectTimeout=120 
    -o ControlPath=/Users/techraf/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.1.109 
    '/bin/sh -c '"'"'(umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1469485176.18-28678795304310 `" && echo ansible-tmp-1469485176.18-28678795304310="` echo $HOME/.ansible/tmp/ansible-tmp-1469485176.18-28678795304310 `") && sleep 0'"'"'' 

的SSH參數的第一部分是從ansible.cfg目前採取的當前目​​錄(這是我的本意) :

[ssh_connection] 
ssh_args = -o PasswordAuthentication=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ControlMaster=auto -o ControlPersist=60s 

哪裏第二部分:

-o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no 
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
-o PasswordAuthentication=no -o ConnectTimeout=120 

從哪裏來?

我的目標是使用密碼認證來運行這個劇本,但後一組參數阻止它。


我已經檢查被清零/不存在以下:

  • (我運行自制軟件安裝在OS X Ansible)
  • $ANSIBLE_CONFIG環境變量
  • .ansible.cfg(以主目錄)

我正在運行Ansible 2.1。 0.0。

回答

1

到連接建立的時候,它不認爲你設置了密碼,所以它試圖從有效的協商選項中刪除它。有關更多詳細信息,請參見the source,或確保在有問題的主機上設置ansible_password。

0

我的目標是使用密碼認證來運行這個劇本,但後一組參數阻止它。

您需要添加額外的參數Ansible使用口令認證:然後

-k, --ask-pass  ask for connection password 

Ansible會提示您輸入密碼一次,然後使用該密碼用於連接到在運行的所有服務器。


您通常應該避免使用SSH身份驗證密碼。這不僅令人討厭(你必須始終輸入密碼),但它會打開服務器進行暴力攻擊;即使你使用其他方式(例如fail2ban)來阻止它們,它仍然不是一個好主意。如果您不喜歡讓密鑰進行身份驗證,您可以在密鑰上輸入密碼並使用ssh代理在引導時解密它們。

+0

感謝您的意見。您是對的,但請注意,您可能會使用Ansible手冊將密鑰上傳至新設置的服務器,該服務器只能通過密碼登錄進行訪問。這就是爲什麼我特別引用了一個提示用戶輸入目標IP的劇本。 – techraf