Estou construindo uma máquina vagabundo (Ubuntu 12.04) com os seguintes requisitos:
- Acesso SSH via Vagrant para um usuário com privilégios sudo.
Gerei chaves públicas/privadas (via ssh-keygen
) no host e movi a chave pública para o authorized_keys
arquivo no convidado. E tentei um SSH sem senha.
Algumas coisas acontecem quando digito vagrant ssh
com chaves SSH habilitadas por senha:
- Eu tenho que digitar minha frase-chave na máquina host para SSH na VM convidada.
- Cada vez que digito ocorretofrase-chave não é aceita.
O que resulta na seguinte mensagem de erro:
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.
Então tentei o ssh sem senha.
vagrant ssh
[email protected]'s password:
??
Eu nunca configurei um usuário vagabundo! Deve estar user@hostname
como eu configurei e posso confirmar que funciona quando inicializo a VM no VirtualBox.
Como faço para que as chaves SSH privadas funcionem corretamente com o Vagrant? O que fazer no anfitrião, o que fazer no convidado?
Atualizar
No VirtualBox, a VM está ativa, mas não consigo executar nenhum dos seguintes comandos do console vagrant, além dos problemas com vagrant ssh
:
vagrant up
vagrant halt
O único comando vagrant que funciona é vagrant suspend
. Quando eu uso, posso parar a máquina via vagrant halt
. Aqui está a saída:
$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.
Responder1
Estou adicionando esta solução para quem vem a este tópico:
Primeiro abra este arquivo na máquina host:
$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile
Verifique se config.ssh.private_key_path
está definido para seu arquivo de chave privada. Se não atualizar isso
ssh para vagrant box com pwd padrão
$ vagrant ssh (default pwd = ‘vagrant’]
Uma vez na caixa:
vagrant@lucid64:~$ sudo visudo -f .ssh/authorized_keys
Adicione sua chave pública a este arquivo, salve o arquivo e saia da caixa
vagrant@lucid64:~$ exit
Voltar para a máquina local
$ vagrant halt
$ vagrant up
Isso funcionou para mim
Responder2
Eu tive o mesmo problema, embora não fosse devido a problemas de chave SSH. Ao iniciar a máquina, o Virtualbox funcionou e deixou o convidado bem. Eu mesmo consegui fazer o SSH na máquina e vagrant ssh
trabalhei, embora ela me pedisse uma senha. Fiz login e encontrei o seguinte em /var/log/auth.log no convidado:
Feb 13 10:14:34 spaaza-dev sshd[1468]: Accepted password for vagrant from 192.168.50.1 port 61816 ssh2
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Feb 13 10:14:34 spaaza-dev sshd[1636]: Received disconnect from 192.168.50.1: 11: disconnected by user
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session closed for user vagrant
Feb 13 10:16:44 spaaza-dev sshd[1764]: Authentication refused: bad ownership or modes for directory /home/vagrant
Entrei para ver as permissões para /home/vagrant:
drwxrwxrwx 6 vagrant vagrant 4096 Feb 13 10:15 vagrant
Não é bom, outra coisa que eu estava fazendo alterou inadvertidamente as permissões do diretório /home/vagrant. O seguinte corrigiu o problema:
# chmod 755 vagrant
drwxr-xr-x 6 vagrant vagrant 4096 Feb 13 10:15 vagrant
Depois disso, desliguei a máquina, liguei-a novamente e o vagrant fez seu trabalho perfeitamente. :-)
Responder3
Tente copiar ochave pública insegura vagabundano arquivo .ssh/authorized_keys
na caixa de convidados.
Espero que isso resolva seu problema de ssh.
Se quiser torná-lo seguro, você pode fazê-lo copiando seu próprio .ssh/id_rsa.pub para o arquivo mencionado acima. E definindo o
config.ssh.private_key_path = '~/.ssh/id_rsa'
no seu arquivo Vagrant.