Ubuntu-14.04

Ansible 使用 SSH 密鑰

  • October 9, 2015

從 Puppet 遷移到 Ansible。就像它是少代理和 SSH 驅動的事實一樣。我只是設置了兩個測試虛擬機。一個作為 Ansible 伺服器(是的過度殺傷),另一個作為範例客戶端(隨機 Linux 伺服器)。我們所有的伺服器都只使用公私鑰對認證。這最初對 Ansible 來說有點問題。我非常(幾乎可以肯定)Ansible 可以使用密鑰對,但我似乎找不到一個很好的例子。

我通過做一個專門為 Ansible 創建了一個密鑰對

ssh-keygen -t rsa -b 4096

然後我將公鑰複製到客戶端。當我通過標準 SSH 對其進行測試時,密鑰對身份驗證效果很好。現在來測試 Ansible。我將測試客戶端放在 Ansible 主機文件中,並使用唯一看起來正確的語法來使密鑰對工作。

[TEST]
10.0.0.5 ansible_ssh_private_key_file=~/.ssh/id_rsa

當我嘗試執行這樣的基本測試模組時

sudo ansible all -m ping

我收到以下錯誤消息

10.0.0.5 | FAILED => SSH Error: Permission denied (publickey,password).
while connecting to 10.0.0.5:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

顯然,我對如何設置 Ansible 以使用密鑰對的語法或概念理解存在缺陷。有什麼建議麼?謝謝

呃!它在 ansible 配置文件 (/etc/ansible/ansible.cfg) 中是正確的

# if set, always use this private key file for authentication, same as
# if passing --private-key to ansible or ansible-playbook
private_key_file = /home/<username>/.ssh/id_rsa

現在一切似乎都奏效了

10.0.0.5 | success >> {
"changed": false,
"ping": "pong"
}

如果您再次遇到 ansible 的 SSH 問題,請將 -vvv 添加到命令行選項,它會告訴您出了什麼問題。

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