web-dev-qa-db-ja.com

AnsibleでVagrantマシンにSSH接続します

通常は、Vagrant-managed VM with vagrant sshを使用してSSHでログインできます。2つのオプションがあります。

  1. Vagrantによって生成されたinsecure_private_keyを使用して認証できます。
  2. config.ssh.forward_agenttrueに設定されており、VMが正しく構成されている場合、独自の秘密鍵を使用します

2番目のオプションを使用します。 S vagrant sshを実行すると、カスタム秘密鍵を使用してマシンにSSHでログインします。

ここで、Ansible SSHをVagrantマシンに許可する必要があり、Vagrantfileを使用したくありません。

だから私は実行しました:

ansible-playbook -i hosts/development --private-key=~/.ssh/id_rsa -u vagrant dev.yml

そして私はこのエラーを返しました:

致命的:[192.168.50.5] => SSHエラー:アクセスが拒否されました(公開鍵)。 192.168.50.5:22への接続中

hosts/inventoryファイルには、VagrantのIPのみが保持されていますVM(192.168.50.5)。

AnsibleがVMにSSH接続できない理由がわかりません。 id_rsaを実行するときとまったく同じユーザー(vagrant)とキー(vagrant ssh)を使用しています。

ただし、上記が実行されない間は、vagrant sshを使用した問題はありません。

任意の提案をいただければ幸いです。

16
luqo33

問題はおそらくhosts/inventoryファイルにあります。その中にAnsibleの適切な接続構成を追加し、保存して再実行する必要があります。

192.168.50.5 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key_file=~/.ssh/id_rsa 

ポート22を使用していない場合は、それに応じてホストファイルのansible_ssh_portを調整してください。

また、Vagrantでpubkeyを設定していない可能性もあるため、これも機能しません。これをテストするには、次を実行します。

vagrant ssh-config | grep IdentityFile
# result should be your private key and not
#   .vagrant/machines/default/virtualbox/private_key

pubkeyをVagrant vmに配置していない場合は、秘密鍵を試す前に追加する必要があります。

リファレンス: http://docs.ansible.com/ansible/intro_inventory.html#list-of-behavioral-inventory-parameters

リファレンス: https://docs.vagrantup.com/v2/cli/ssh_config.html

26
Mike D