ic3b3rg
ic3b3rg

Reputation: 14927

Vagrant ssh authentication failure

The problem with ssh authentication:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...

I can Ctrl+C out of the authentication loop and then successfully ssh in manually.

I performed the following steps on the guest box:

I've also tried using a private (hostonly) network instead of the public (bridged) network, using this line in the Vagrantfile:

config.vm.network "private_network", ip: "172.16.177.7"

I get the same output (except Adapter 2: hostonly) but then cannot ssh in manually.

I also tried config.vm.network "private_network", ip: "10.0.0.100".

I also tried setting config.ssh.password in the Vagrantfile. This does output SSH auth method: password but still doesn't authenticate.

And I also tried rebuilding the box and rechecking all the above.

It looks like others have had success with this configuration, so there must be something I'm doing wrong.

I found this thread and enabled the GUI, but that doesn't help.

Upvotes: 176

Views: 232559

Answers (30)

Ax3
Ax3

Reputation: 21

Facing this problem nowdays using Windows 10, Vagrant 2.2.6 and VM VBox 5.2 Tried almost all previous saying to rewrite or point to the ssh public key from the host, but none of this worked for me. The only solution actually did the trick was the one from @Mohit Verma, copying this 3 lines:

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

into the vagrantfile, after the config.vm.provision block. then ran the vagrant up command and it worked! some interresting messages on the console stating that it was replacing the public and private keys on its own after doing this change. Hope this helps, all credit to Mohit Verma posting his solution on 2021

Upvotes: 0

alboforlizo
alboforlizo

Reputation: 361

If SSH to a Vagrant Box stalls, you can always enter the box by changing the Vagrantfile to

vb.gui = true 

enter vagrant and vagrant again as a password.

In the VM, it is possible to check the logs of sshd. The next command from this link was of help:

tail -n 500 /var/log/auth.log | grep 'sshd'

In my case I accidentally changed the home directory and subdirectory ownership and modes but once inside the VM, the following commands didn' work:

sudo chmod -R 700 /home/vagrant/.ssh
sudo chmod 600 /home/vagrant/.ssh/authorized_keys
sudo chown -R vagrant:vagrant /home/vagrant/.ssh

I tried to generate a new keypair in the Host (the ssh client) following this link and copy (using a python web server as explained at this link by Jerzy Pawlikowski) the public key into the guest VM (the ssh server) but it was not successful either. In the end I had to destroy the VM which is not a real solution in my own opinion:

vagrant destroy

Then I launched again the new machine:

vagrant up

At the startup, I noticed the following log:

default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...

Instead of destroying the VM, my proposed solution therefore is to give correct ownership and modes to the ssh directory in the VM and also delete all keys (both in VM and Host) so that Vagrant can only checkout the insecure key and generate a new keypair by itself. See also this link about config.ssh.insert_key, this other link explaining a similar procedure by JuPlutonic and this last link by mtchavez.

Upvotes: 1

heringer
heringer

Reputation: 3188

Just adding my solution:

rm /Users/myusername/.ssh/config
vagrant ssh-config >> /Users/myusername/.ssh/config

Somewhat similar to other proposed solutions here.

Upvotes: 1

Radek
Radek

Reputation: 263

I have started the machine, then:

vagrant ssh-config

I've gotten the following:

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa
  IdentityFile /Users/my-user-name/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

Then I've ran

cat ~/.ssh/id_rsa > /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa

Machine booted from here on

  • El Capitan 10.11.1 Beta (15B38b)
  • Virtual Box 5.0.8 r103449
  • Vagrant 1.7.4

Upvotes: 0

Takamitsu Mizutori
Takamitsu Mizutori

Reputation: 767

Not sure your case is the same as mine though. In my case vagrant ssh failed in key authentication and asked for password. I found my old setting below in my ~/.ssh/config (at the top of the file).

PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa

After removing this, key authentication started working. No more password asked.

Upvotes: 0

Mohit Verma
Mohit Verma

Reputation: 273

If you are using windows and this issue come unexpectedly, please try the following code in configuration.

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

This basically uses the default vagrant configuration.

Upvotes: 5

Anas
Anas

Reputation: 1503

Unable to run vagrant up because it gets stuck and times out? I recently had a "water in laptop incident" and had to migrate to a new one(on a MAC by the way). I successfully got all my projects up and running beside the one, which was using vagrant.

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 8000 (guest) => 8877 (host) (adapter 1)
    default: 8001 (guest) => 8878 (host) (adapter 1)
    default: 8080 (guest) => 7777 (host) (adapter 1)
    default: 5432 (guest) => 2345 (host) (adapter 1)
    default: 5000 (guest) => 8855 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...

It couldn't authenticate, retried again and again and eventually gave up.


This is how I got it back in shape in 3 steps:

1 - Find the IdentityFile used by Vagrant:

$ vagrant ssh-config

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ned/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

2 - Check the public key in the IdentityFile:

$ ssh-keygen -y -f <path-to-insecure_private_key>

It'd output something like this:

ssh-rsa AAAAB3Nyc2EAAA...9gE98OHlnVYCzRdK8jlqm8hQ==

3 - Log in to the Vagrant guest with the password vagrant:

ssh -p 2222 -o UserKnownHostsFile=/dev/null [email protected]
The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is dc:48:73:c3:18:e4:9d:34:a2:7d:4b:20:6a:e7:3d:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
[email protected]'s password: vagrant
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-31-generic x86_64)
...

NOTE: if vagrant guest is configured to disallow password authentication you need to open VBox' GUI, double click guest name, login as vagrant/vagrant, then sudo -s and edit /etc/ssh/sshd_config and look for PasswordAuthentication no line (usually at the end of the file), replace no with yes and restart sshd (i.e. systemctl reload sshd or /etc/init.d/sshd restart).

4 - Add the public key to the /home/vagrant/authorized_keys file.

$ echo "ssh-rsa AA2EAAA...9gEdK8jlqm8hQ== vagrant" > /home/vagrant/.ssh/authorized_keys

5 - Exit (CTRL+d) and stop the Vagrant guest and then bring it back up.

IMPORTANT if you use any provisioning tools (i.e. Ansible etc) disable it before restarting your guest as Vagrant will think your guest is not provisioned because of use of insecure private key. It will reinstall the key and then run your provisioner!

$ vagrant halt
$ vagrant up

Hopefully you will have your arms in the air now...

I got this, with just a minor amend, from Ned Batchelders article - Ned you are a champ!

Upvotes: 17

sankari
sankari

Reputation: 476

In my experience, this has been a surprisingly frequent problem with new vagrant machines. By far the easiest way to solve it, instead of altering the configuration itself, has been creating the required ssh keys manually on the client, then using the private key on the host.

  1. Log in to vagrant machine: vagrant ssh, use default password vagrant.
  2. Create ssh keys: for example, ssh-keygen -t rsa -b 4096 -C "vagrant" (as adviced by GitHub's relevant guide).
  3. Rename the public key file (by default id_rsa.pub), overriding the old one: mv .ssh/id_rsa.pub .ssh/authorized_keys.
  4. Reload ssh service in case needed: sudo service ssh reload.
  5. Copy the private key file (by default id_rsa) to the host machine: for instance, use a fine combination of cat and clipboard, cat .ssh/id_rsa, paint and copy (better ways must exist, go invent one!).
  6. Logout from the vagrant machine: logout.
  7. Find the current private key used by vagrant by looking at its configuration: vagrant ssh-config (look for instance ÌdentityFile "/[...]/private_key".
  8. Replace the current private key with the one you created at the host machine: for example, nano /[...]/private_key and paste from the clipboard, if all else fails. (Note, however, that if your private_key is not project specific but shared by multiple vagrant machines, you better configure the path yourself in order to not break other perfectly working machines! Changing the path is as simple as adding a line config.ssh.private_key_path = "path/to/private_key" into the Vagrantfile.) Furthermore, if you are using PuPHPet generated machine, you can store your private key to file puphpet/files/dot/ssh/id_rsa and it will be added to Vagrantfile's ssh config automatically.
  9. Test the setup: vagrant ssh should now work.

Should that be the case, congratulate yourself, logout, run vagrant provision if needed and carry on with the meaningful task at hand.

If you still face problems, it may come handy to add verbose flag to ssh command to ease debugging. You can pass that (or any other option, for that matter) after double dash. For example, typing vagrant ssh -- -v. Feel free to add as many v's as you need, each will give you more information.

Upvotes: 27

For general information: by default to ssh-connect you may simply use

user: vagrant password: vagrant

https://www.vagrantup.com/docs/boxes/base.html#quot-vagrant-quot-user

First, try: to see what vagrant insecure_private_key is in your machine config

$ vagrant ssh-config

Example:

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/konst/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

http://docs.vagrantup.com/v2/cli/ssh_config.html

Second, do: Change the contents of file insecure_private_key with the contents of your personal system private key

Or use: Add it to the Vagrantfile:

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path is your local private key
  2. Your private key must be available to the local ssh-agent. You can check with ssh-add -L. If it's not listed, add it with ssh-add ~/.ssh/id_rsa
  3. Don't forget to add your public key to ~/.ssh/authorized_keys on the Vagrant VM. You can do it by copy-and-pasting or using a tool like ssh-copy-id (user: root password: vagrant port: 2222) ssh-copy-id '-p 2222 [email protected]'

If still does not work try this:

  1. Remove insecure_private_key file from c:\Users\USERNAME\.vagrant.d\insecure_private_key

  2. Run vagrant up (vagrant will be generate a new insecure_private_key file)

In other cases, it is helpful to just set forward_agent in Vagrantfile:

Vagrant::Config.run do |config|
   config.ssh.forward_agent = true
end

Useful:

Configurating git may be with git-scm.com

After setup this program and creating personal system private key will be in yours profile path: c:\users\USERNAME\.ssh\id_rsa.pub

PS: Finally - suggest you look at Ubuntu on Windows 10

Upvotes: 190

Nabil Kadimi
Nabil Kadimi

Reputation: 10384

1. Locate the private key in the host:

vagrant ssh-config
#

Output:

Host default
  ...
  Port 2222
  ...
  IdentityFile /home/me/.vagrant.d/[...]/virtualbox/vagrant_private_key
  ...

2. Store the private key path and the port number in variables:

Use these two commands with the output from above:

pk="/home/me/.vagrant.d/.../virtualbox/vagrant_private_key"
port=2222
#

3. Generate a public key and upload it to the guest machine:

Copy/pasta, no changes needed:

ssh-keygen -y -f $pk > authorized_keys
scp -P $port authorized_keys vagrant@localhost:~/.ssh/
vagrant ssh -c "chmod 600 ~/.ssh/authorized_keys"
rm authorized_keys
#

Upvotes: 3

Mahmoud Abdelsattar
Mahmoud Abdelsattar

Reputation: 1431

Another simple solution, in windows, go to the file Homestead/Vagrantfile and add these lines to connect with a username/password instead of a private key:

config.ssh.username = "vagrant"  
config.ssh.password = "vagrant"  
config.ssh.insert_key = false 

So, finally part of the file will look like this :

if File.exists? homesteadYamlPath then
    settings = YAML::load(File.read(homesteadYamlPath))
elsif File.exists? homesteadJsonPath then
    settings = JSON.parse(File.read(homesteadJsonPath))
end

config.ssh.username = "vagrant"  
config.ssh.password = "vagrant"  
config.ssh.insert_key = false 

Homestead.configure(config, settings)

if File.exists? afterScriptPath then
    config.vm.provision "shell", path: afterScriptPath, privileged: false
end

Hope this help ..

Upvotes: 1

rickb
rickb

Reputation: 671

Been beating my head on this for the last couple of days on a repackaged base box. (Mac OS X, El Capitan)

Following @Radek 's procedure I did 'vagrant ssh-config' on the source box and got:

...
/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key
...

On the new copy, that command gave me:

...
IdentityFile /Users/<username>/.vagrant.d/insecure_private_key
...

So, I just added this line in the new copy:

...
config.ssh.private_key_path = "/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key"
...

Not perfect, but I can get on with my life.

Upvotes: 0

Krishna
Krishna

Reputation: 1137

I resolved the issue in the following manner. 1. Create new SSH key using Git Bash

$ ssh-keygen -t rsa -b 4096 -C "vagrant@localhost"
# Creates a new ssh key, using the provided email as a label
Generating public/private rsa key pair.
  1. When you're prompted to "Enter a file in which to save the key," press Enter. This accepts the default file location.

    Enter a file in which to save the key (/Users/[you]/.ssh/id_rsa): [Press enter]

  2. At the prompt, type a secure passphrase. You can leave empty and press enter if you do not need a passphrase.

    Enter a file in which to save the key (/Users/[you]/.ssh/id_rsa): [Press enter]

  3. To connect to your Vagrant VM type following command

    ssh vagrant@localhost -p 2222

When you get following message type “yes” and press enter.

The authenticity of host 'github.com (192.30.252.1)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
  1. Now to establish a SSH connection type : $ vagrant ssh

  2. Copy the host public key into authorized_keys file in Vagrant VM. For that, go to “Users/[you]/.ssh” folder and copy the content in id_rsa.pub file in host machine and past into “~/.ssh/authorized_keys” file in Vagrant VM.

  3. Change permission on SSH folder and authorized_keys file in Vagrant VM
  4. Restart vagrant with : $ vagrant reload

Upvotes: 1

Razvan
Razvan

Reputation: 31

This has happened to me several times and the way I solved it was :

  1. Check and make sure your Vagrantfile has the correct private key path :

    config.ssh.private_key_path = "/home/razvan/.ssh/id_rsa"

  2. Execute > vagrant ssh command in a linux terminal

  3. On your vagrant machine go to

    cd /home/vagrant/.ssh

and check if the ssh key in the authorized_keys file is the same as the one you have on your local machine in ~/.ssh/id_rsa.pub. If not replace the one from your vagrant authorized_keys with the one on your local machine found in ~/.ssh/id_rsa.pub.

  1. Reload Vagrant :

    vagrant reload

Hope this helps someone else. Cheers!

Upvotes: 3

paulalexandru
paulalexandru

Reputation: 9530

This might be the last answer in the list but this worked for me and I did not find this answer anywhere, I found it my self after 2 days of researches so you've better try this if nothing else worked for you until now.

In my case the problem came from my VirtualBox. I don't know for what reason an option was disabled and it should have been enabled.

enter image description here

As you can see in the image, there were some network problems with my VirtualBox and what I had to do in order to fix this problem was to select my machine, press on settings, network tab and after that make sure that the option Cable Connected was selected. In my case this option was not selected and I it failed at this step:

default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key

First I thought that the port is already in use, after that I reinstalled Vagrant and I also tried other things but none of them worked for me.

Upvotes: 3

Parag Lohiya
Parag Lohiya

Reputation: 21

Mac Solution:

  1. Added local ssh id_rsa key to vagrant private key

    vi /Users//.vagrant/machines/default/virtualbox/private_key

    /Users//.ssh/id_rsa

  2. copied public key /Users//.ssh/id_rsa.pub on vagrant box authorized_keys

ssh vagrant@localhost -p 2222 (password: vagrant) ls -la cd .ssh

  1. chmod 0600 ~/.ssh/authorized_keys

  2. vagrant reload

Problem resolved.

Thanks to

Upvotes: 2

Shehzad Nizamani
Shehzad Nizamani

Reputation: 2213

I solved this problem by running commands on windows 7 CMD as given in this here is the link last post on this thread,

https://github.com/mitchellh/vagrant/issues/6744

Some commands that will reinitialize various network states:
Reset WINSOCK entries to installation defaults : netsh winsock reset catalog
Reset TCP/IP stack to installation defaults : netsh int ip reset reset.log
Flush DNS resolver cache : ipconfig /flushdns
Renew DNS client registration and refresh DHCP leases : ipconfig /registerdns
Flush routing table : route /f

Upvotes: 0

Lei Xu
Lei Xu

Reputation: 601

If you experience this issue on vagrant 1.8.5, then check out this thread on github:

https://github.com/mitchellh/vagrant/issues/7610

It's caused basically by a permission issue, the workaround is just

vagrant ssh 
password: vagrant 
chmod 0600 ~/.ssh/authorized_keys
exit

then

vagrant reload 

FYI: this issue only affects CentOS, Ubuntu works fine.

Upvotes: 49

tread
tread

Reputation: 11088

Simple:

homestead destroy
homestead up

Edit (Not as simple as first thought):

The issue was that new versions of homestead use php7.0 and some other stuff. To avoid this mess up make sure you set the verison in Homestead.yml:

version: "0"

Upvotes: 0

Aeolun
Aeolun

Reputation: 756

Just for those people that have been idiots like me, or have had something odd happen to their vagrant machine. This error can also occur when you changed the permissions of the vagrant user's home directory (deliberately or by accident).

You can log in instead (as described in other posts) using the password ('vagrant') and then run the following command to fix the permissions.

sudo chown -R vagrant:vagrant /home/vagrant

Then you should be able to log in again without entering the password.

TL;DR: The permissions on your vagrant home folder are wrong.

Upvotes: 0

Raja Ehtesham
Raja Ehtesham

Reputation: 575

Run the following commands in guest machine/VM:

wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R vagrant:vagrant ~/.ssh

Then do vagrant halt. This will remove and regenerate your private keys.

(These steps assume you have already created or already have the ~/.ssh/ and ~/.ssh/authorized_keys directories under your home folder.)

Upvotes: 44

Ahmet Karakaya
Ahmet Karakaya

Reputation: 10139

First of all you should remove the autogenerated insecure_private_key file, then regenerate this file by typing

vagrant ssh-config

then

vagrant halt
vagrant up

It should work

Upvotes: 1

Onshop
Onshop

Reputation: 3075

also could not get beyond:

default: SSH auth method: private key

When I used the VirtualBox GUI, it told me there was an OS processor mismatch.

To get vagrant up progressing further, in the BIOS settings I had to counter-intuitively:

Disable: Virtualisation

Enable: VT-X

Try toggling these setting in your BIOS.

Upvotes: 1

Vayodya Tamari
Vayodya Tamari

Reputation: 285

This the all correct steps that I followed for fix this bellow issue occurred when vagrant up command run.

These are the steps that I followed

  1. create a folder. e.g F:\projects
  2. Open this folder in git bash and run this command ssh-keygen -t rsa -b 4096 -C "[email protected]" (put a valid email address)
  3. Then generating key pair in two separate files in the project folder. e.g project(private key file), project.pub (public key file)
  4. Go to this location C:\Users\acer.vagrant.d and find file insecure_private_key
  5. Get backup of the file and copy the content of newly created private key and paste it in insecure_private_key file. Then copy insecure_private_key and paste it in this location too.
  6. Now vagrant up in your project location. after generating above issue type vagrant ssh and go inside giving username, password. (in default username and password is set as vagrant)
  7. Go inside to this location cd /home/vagrant/.ssh and type mv authorized_keys authorized_keys_bk
  8. Then type ls -al and type vi authorized_keys for open authorized_keys file vi editor.
  9. Open generated public key from notepad++ (project.pub) and copy content Then press i on git bash to enable insert mode on vi editor and right click and paste. After press escape to get out from insert mode
  10. :wq! for save the file and type ls -al
  11. Then permissions are set like bellow no need to change drwx------. 2 vagrant vagrant 4096 Feb 13 15:33 . drwx------. 4 vagrant vagrant 4096 Feb 13 14:04 .. -rw-------. 1 vagrant vagrant 743 Feb 13 14:26 authorized_keys -rw-------. 1 root root 409 Feb 13 13:57 authorized_keys_bk -rw-------. 1 vagrant vagrant 409 Jan 2 23:09 authorized_keys_originial Otherwise type chmod 600 authorized_keys and type this command too chown vagrant:vagrant authorized_keys
  12. Finally run the vagrant halt and vagrant up again.

************************THIS IS WORK FINE FOR ME*******************************

Upvotes: 0

Elias Kouskoumvekakis
Elias Kouskoumvekakis

Reputation: 416

I am using Vagrant with a Puphpet setup from May 2015 and had this problem. It appears that the configuration that was generated didn't handle Vagrant 1.7.4 (or maybe a bit earlier?) behavior of regenerating ssh keys if it detects an insecure key.

I solved it by adding the following in my Puphpet generated Vagrantfile (local setup) inside the "if File.file?(customKey)" clause:

config.ssh.insert_key = false

Reference commit

Upvotes: 0

Michael
Michael

Reputation: 321

I have found a way around the mess with the keys on Win 8.2 where I did not succeed with any of the methods mentioned here. It may be interesting that exactly the same combination of VirtualBox, Vagrant, and the box run on Win 7 Ultimate without any problems.

I switched to the password authentication by adding the following commands in Vagrantfile:

config.ssh.password = "vagrant"
config.ssh.insert_key = false

Note that I'm not sure that this is the only changes required because I already did:

  1. I generated a new RSA key pair and changed authorized_keys file accordingly (all in the virtual machine, see the suggestions above and elsewhere)

  2. I copied the private key to the same directory where Vagrantfile resides and added

     config.ssh.private_key_path = "./id_rsa"
    

But I believe that these changes were irrelevant. I spent a plenty of time trying, so I did not change the working configuration by obvious reasons :)

Upvotes: 10

Don Smith
Don Smith

Reputation: 400

Between all of the responses here, there are lots of good things to try. For completeness, if you

ssh vagrant@localhost -p 2222

as @Bizmate suggests, and it fails, be sure you have

AllowUsers vagrant

in the /etc/ssh/sshd_config of your guest/vagrant machine.

Upvotes: 0

thk
thk

Reputation: 96

If you are using default SSH setup in your VagrantFile and started seeing SSH authentication errors after re-associating your VM box due to crash, try replacing public key in your vagrant machine.

Vagrant replaces public key associated with insecure private key pair at each log out due to security reasons. If you didn't properly shut down your machine, public/private key pair can go out of sync, causing SSH authentication error.

To resolve this issue, simply load up the current insecure private key and then copy the public key pair into your VM's authorized_keys file.

Upvotes: 4

Bizmate
Bizmate

Reputation: 1872

None of the above worked for me. Somehow the box had the wrong public key added in the vagrant user authorised_keys file.

If you can still ssh on the box with the vagrant password (password is vagrant), i.e.

ssh vagrant@localhost -p 2222

then copy the public key content from https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub to the authorised_keys file with the following command

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" > .ssh/authorized_keys

When done exit the VM and try vagrant ssh again. It should work now.

Upvotes: 89

Brad Parks
Brad Parks

Reputation: 71961

This can also happen if you're trying to force your VM to use a root user by default for SSH....

For example, a config like so in your Vagrantfile may cause this failure:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Solution: Comment out those lines and try again!

Upvotes: 11

Related Questions