You can access your Vagrantbox via:

$ vagrant ssh

However if you want to access it via usual ssh cli, how can you do that?

By default Vagrant binds your localhost’s 2222 port to your Vagrantbox’s 22 port.

So you can access your box by;

$ ssh -p 2222 vagrant@localhost

It is same thing as vagrant ssh.

But before you can do that you need to add your ssh pub_key to your vagrant host.

ssh-copy-id

The best way to add your pub_key is to use ssh-copy-id binary/command:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 vagrant@localhost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/<username>/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
vagrant@localhost's password:

After you prompt your vagrant user password, pub_key will be appended.

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '2222' 'vagrant@localhost'"
and check to make sure that only the key(s) you wanted were added.

Info

Default credentials are:

  • user: vagrant
  • password: vagrant

Other Methods

You can use some manual unix cli magic:

$ cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/id_rsa.pub -p 2222 vagrant@localhost 'cat >> .ssh/authorized_keys && echo "SSH key copied."'

Or, you can use Vagrant’s provision:

Vagrant.configure(2) do |config|
  config.vm.provision "shell", inline: <<-SHELL
    cat /home/<username>/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys
SHELL
end

Now you can access your Vagrantbox via ssh without password:

$ ssh -i ~/.ssh/id_rsa.pub -p 2222 vagrant@localhost

All done!