2016-05-13 99 views
21

我試圖運行在多個服務器上ansible的角色,但我得到一個錯誤:ansible SSH連接失敗

fatal: [192.168.0.10]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}

我的/ etc/ansible/hosts文件看起來是這樣的:

192.168.0.10 ansible_sudo_pass='passphrase' ansible_ssh_user=user 
192.168.0.11 ansible_sudo_pass='passphrase' ansible_ssh_user=user 
192.168.0.12 ansible_sudo_pass='passphrase' ansible_ssh_user=user 

我不知道發生了什麼 - 一切看起來都很好 - 我可以通過SSH登錄,但是ping能夠返回相同的錯誤。

從詳細的執行日誌:

<192.168.0.10> ESTABLISH SSH CONNECTION FOR USER: user <192.168.0.10> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=user -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.0.10 '/bin/sh -c '"'"'(umask 22 && mkdir -p " echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829 " && echo " echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829 " )'"'"''

你能幫我不知何故?如果我必須在本地模式下使用ansible(-c local),那麼它是無用的。

我試着刪除ansible_sudo_pass和ansible_ssh_user,但它沒有幫助。

回答

30

您需要更改ansible_ssh_pass以及或SSH密鑰,例如我在我的清單文件中使用這樣的:

192.168.33.100 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant 

在那之後我可以連接到遠程主機:

ansible all -i tests -m ping 

結果如下:

192.168.33.100 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
} 

希望對你有幫助。

+1

是的!我錯過了ansible_ssh_pass變量。一切都像現在的魅力一樣。非常感謝! – Thomas

+1

根據http://docs.ansible.com/ansible/intro_inventory.html,它應該是'ansible_user'而不是'ansible_ssh_user'。 – Matthias

+0

如果你搜索'ansible_ssh_user',那麼你可以在上面提到的鏈接中找到它,它在1.9中使用,但在合理的2.0版本中,它們已經將其更改爲'ansible_user',但是'ansible_ssh_user'仍然對兩者都有效。 –

2

嘗試修改您的主機文件:

192.168.0.10 
192.168.0.11 
192.168.0.12 
0

的ansible_ssh_port同時重新加載虛擬機改變。

==>默認:引導VM ...

==>默認:等待機器啓動。這可能需要幾分鐘的時間...

default: SSH address: 127.0.0.1:2222 

default: SSH username: vagrant 

default: SSH auth method: private key 

所以我不得不更新庫存/ hosts文件如下:

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='centos' ansible_ssh_private_key_file=<key path> 
4
mkdir /etc/ansible 
cat > hosts 
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key 

轉到您的劇本目錄並運行ansible所有-m ping

+0

這對我有效 – suyesh

0

我有這個問題,但它是由於不同於其他答案中記錄的原因。我試圖部署的主機只有通過跳轉框纔可用。最初,我認爲這是因爲Ansible不認識我的SSH配置文件,但它是。對我來說,解決方案是確保存在於SSH配置文件中的用戶與Ansible操作手冊中的用戶匹配。這爲我解決了這個問題。