質問: よろしくお願いします。 ・環境 Virtualbox(Windows10 host) Ansible 2.3.1 CentOS 6.7 on VM ansibleで疎通確認を行なおうとしたところ次のようなエラーになりました。 ``` [root@controller ansible]# ansible all -i inventory/hosts -m ping 192.168.100.20 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", "unreachable": true } ``` controller側ではssh-keygen -t rsaで作成、 ssh-copy-id root@192.168.100.20 で公開鍵を送りました。 しかしtarget側のauthroized_keysは「The agent has no identities.」としか書かれていません。 ansible all -i inventory/hosts -m ping -k を実行するとSSHのパスワードが尋ねられるので入力すると ping pongが返ってきてくれます。 いろいろ調べたところgithubの質問板に似た質問で、相手側で鍵を作ったら解決したというのがあったのですが、本当にそれは正しい対策なのか不安です。 いずれにしてもssh-copy-idでtarget側に公開鍵が渡ってないことが問題だと思っています。 どうすれば公開鍵を渡せるのか、ご教授いただけると幸いです。 (参考サイト) http://qiita.com/t_nakayama0714/items/fe55ee56d6446f67113c https://github.com/ansible/ansible/issues/19584
回答: 自己解決しました。 ご回答頂きました方、有難うございました。 > > ssh-copy-id root@192.168.100.20 で公開鍵を送りました。 > > > と書きましたが、このコマンドが間違いでした。正しくは、 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.20 と入力すべきでした。これで公開鍵が相手側に送信され、相手側の authorized_keys に公開鍵が書き込まれ、controller側から SSH接続する際にパスワードを尋ねられることなくtarget側にアクセス できるようになりました。 (原因は参考サイトの書き損じでもありますが) 今はDIYレベルですが、業務でもansibleは使っていきたいので引き続き やっていきたいです。