2015-09-23 19 views
7

Normalmente, è possibile eseguire l'ssh su una VM gestita da Vagrant con vagrant ssh. Ci sono due opzioni:SSH in una macchina Vagrant con Ansible

  1. è possibile utilizzare un insecure_private_key generato da Vagrant a autenticazione.
  2. utilizzare la propria chiave privata - a condizione che config.ssh.forward_agent è impostato su true, e la VM è configurate correttamente

Io uso la seconda opzione. S quando corro vagrant ssh, I ssh nella macchina con la mia chiave privata personalizzata.

Ora ho bisogno di lasciare Ansible SSH nella mia macchina Vagrant e non voglio usare Vagrantfile per questo.

Così ho eseguito:

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

E ho questo errore riscontrato:

fatal: [192.168.50.5] => SSH Error: Permission denied (publickey). while connecting to 192.168.50.5:22

Il file hosts/inventory detiene solo l'IP del mio Vagrant VM (192.168.50.5).

Non so perché Ansible non può ssh nella VM. Sta usando esattamente lo stesso utente (vagrant) e la chiave (id_rsa) come quando si esegue vagrant ssh.

Tuttavia, non ci sono problemi con lo vagrant ssh mentre il precedente non funzionava.

Qualsiasi suggerimento sarebbe molto apprezzato.

+0

sei sicuro che la porta è 22 e non 2222? – Vor

+0

ho ricercato alcune possibilità dopo la mia risposta. Credo che tu non abbia configurato il tuo pubkey nei tasti_autentici dell'utente vm vagabondo. Non consiglio di usare le tue chiavi personali per vagabondare a meno che non sia assolutamente necessario. –

risposta

13

Il problema si trova probabilmente nel file hosts/inventory. È necessario aggiungere la configurazione di connessione corretta per Ansible al suo interno, salvare ed eseguire nuovamente.

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

Se non si utilizza la porta 22, regolare la ansible_ssh_port nel vostro file hosts di conseguenza.

È anche possibile che tu non abbia configurato il tuo pubkey in Vagrant, quindi anche questo non funzionerebbe. Per verificare ciò, eseguire:

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

Se non avete messo il vostro pubkey nel Vagrant vm, è necessario aggiungere che prima di poter provare la propria chiave privata.

Riferimento: http://docs.ansible.com/ansible/intro_inventory.html#list-of-behavioral-inventory-parameters

Riferimento: https://docs.vagrantup.com/v2/cli/ssh_config.html

+0

Il motivo per cui non ero in grado di ssh era che stavo usando un file di chiave privata sbagliato. La chiave corretta da usare è stata rivelata da 'vagrant ssh-config'. Grazie! – luqo33

+0

Non riuscivo a utilizzare un file di inventario personalizzato. il mio problema era che dovevo specificare il numero di porta personalizzato quando stavo specificando l'host nell'inventario: '[predefinito] 127.0.0.1: 2201' altrimenti il ​​valore predefinito è 22 e non potrei impostarlo in' ansible.cfg' o 'Vagrantfile' – Hafiz

+0

@Hafiz puoi anche usare' ansible_ssh_port = 2201' nel file di inventario –

Problemi correlati