Ubuntu-14.04
Ansible 使用 SSH 密鑰
從 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 添加到命令行選項,它會告訴您出了什麼問題。