Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
SSH between Mac OS X host and Virtual Box guest

On Mac OS (host):

Shutdown your VM and do:

VirtualBox > Settings > Network > Add (you will get vboxnet0)

On a terminal ifconfig will show you new interface vboxnet0

VM's Settings > System > check "Enable I/O APIC." VM's Settings > Network > Adapter 2 > host-only vboxnet0

On Ubuntu (guest):

Install OpenSSH Server

Edit /etc/network/interfaces file to append the following lines:

auto eth1
iface eth1 inet static
address 192.168.56.10
netmask 255.255.255.0

Run sudo ifup eth1 from the Ubuntu command line. SSH server should be up and running. Switch to your host terminal and enter ssh 192.168.56.10

sources:

@mbakirov
Copy link

mbakirov commented Jan 11, 2017

I ended up losing my internet connection when doing this, so installing ssh would not work. To fix, I added a third network adapter:
(power off vm) > Settings > Network > Adapter 3 > Check enable > Attached to: NAT

Great! It's works! Thank you a lot!

@nickylimjj
Copy link

nickylimjj commented Jan 28, 2017

I am getting permission denied when i try to log in. What password should i be trying? Thanks!

@chao1995
Copy link

chao1995 commented Feb 7, 2017

If anyone else has the error cannot find device eth1, check your ifconfig output and see what is the name of the interface.

According to this answer, it may not always be eth1. And in my case (VirtualBox 5.1.14), the interface is named enp0s8.

So just follow the steps in the gist but replace eth1 with enp0s8. And I can ssh to my VM now!

@computereasy
Copy link

computereasy commented Mar 12, 2017

great, it works.

@AnalyzePlatypus
Copy link

AnalyzePlatypus commented May 20, 2017

I had considerable difficulty setting up.

This is what worked for me:
I followed the gist with @chao1995's suggestions.

In the VM:

$ ifconfig
lo        Link encap:Local Loopback 
enp0s8    Link encap:Ethernet ...

My etc/network/interfaces looks like this:

$ sudo nano etc/network/interfaces
GNU nano 2.5.3 
# Added this:
# Local Interface (for SSH)
auto enp0s8
iface enp0s8 inet static
address 192.168.56.10
netmask 255.255.255.0

To bring up the service, I ran:

$ sudo ifup enp0s8

In my host terminal:

$ ssh <username>@192.168.56.10
Welcome to Ubuntu 16.04.2 LTS ...

Wahoo!

Troubleshooting Checklist

In VirtualBox Manager

  • Is Settings > Network > Adaptor 2 set to Host-Only Adaptor (vboxnet0)?
  • Is Settings > System > Enable I/O APIC checked?

In the VM

  • Is OpenSSH installed? ($ sudo apt-get install openssh-server )
  • Have you made the changes to /etc/network/interfaces, replacing eth1 with your interface name from ifconfig ?
  • Have you brought up the adaptor with $ sudo ifup <interface name>?

On your host

  • Have you determined the correct IP address to ssh into? (Runifconfig. Use the value of vboxnet0's inet field. If vboxnet0 is not available, review the section above In VirtualBox Manager)
  • Run ssh <username>@<ip address> and log in.

I hope that helps.
Good luck out there!

@firstrow
Copy link

firstrow commented Jun 10, 2017

thanks man!

@crsuarez
Copy link

crsuarez commented Jun 23, 2017

For those who had issues configuring the interfaces, take in count, that is better to attach Adapter 1 as "host only adapter", and, same way, Adapter 2 as "NAT", so that, you won't have route problems. Normally, in production you setup the management interface in eth0, and left the others for other configurations. Virtualbox, support just 4 adapters, which is fine for testing.
For Centos 6.x, ifcfg-eth1 (configured in adapter as attached to NAT).

#] cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=yes

I forked this one, and add some other info, that you might find useful tho. https://gist.github.com/crsuarez/5a066638a805e46b448acebd4f5fe8d1

@kilojoules
Copy link

kilojoules commented Jul 17, 2017

I needed to setup up port forwarding to make this work. https://medium.com/trisfera/virtualbox-shared-folders-ssh-from-osx-host-to-ubuntu-server-guest-tutorial-ef2db1722033 ssh username@localhost -p 2281 worked for me!

@MichalKrakow
Copy link

MichalKrakow commented Nov 15, 2017

What if no option for adding HOST-ONLY adapter is available in network config? It only allows me to add NAT adapter...

@tmehlinger
Copy link

tmehlinger commented Feb 2, 2018

@MichalKrakow File => Host Network Manager => Create.

@timsmelik
Copy link

timsmelik commented Feb 27, 2018

As @chao1995 and @AnalyzePlatypus pointed out the interface name might not be eth1 (as of systemd 197 predictable network interface names are used). In addition, the host-only adapter might not show up in ifconfig because it is not up yet. I made the mistake of setting a static IP address on my first network adapter instead. Running ifconfig -a revealed the correct adapter.

@cpace6
Copy link

cpace6 commented Mar 7, 2018

@crsuarez VB only lists 4 adapters through the GUI but actually supports up to 8 via the command line tool

@skuo-bl
Copy link

skuo-bl commented Mar 8, 2018

Two network interfaces are needed on the guest to enable it to connect to the internet and allow ssh from host.
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:6c:bb:26 brd ff:ff:ff:ff:ff:ff
3: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:44:3b:96 brd ff:ff:ff:ff:ff:ff

enp0s3 is mapped to NAT and enp0s8 is mapped to vboxnet0 (192.168.56.1). Add the following to /etc/network/interfaces and leave the config for enp0s3 as is.

# Add the following
auto enp0s8
iface enp0s8 inet static1
address 192.168.56.10
netmask 255.255.255.0

Back on host, ssh 192.168.56.0 should work

@skuo-bl
Copy link

skuo-bl commented Mar 8, 2018

One more thing, use "Paravirtualized Network" for Host-only Adapter.

@c-rainstorm
Copy link

c-rainstorm commented Mar 19, 2018

Since Ubuntu 17.10,use netplan to configure your static IP address。 See my fork for more detail.

@beesuns
Copy link

beesuns commented Apr 18, 2018

I am currently using MacBook Air as host and I have installed virtualbox and run kali linux as guest.

In case you can't find vboxnet0 try this: VirtualBox >Preferences > Network > Host-only Networks > Add host-only network (lns)

When I was trying this, there was only NAT Network option. I can not find Host-only Networks.

@Shawyeok
Copy link

Shawyeok commented Apr 23, 2018

@beesuns You can create a host-only network adapter via VBoxManage command.

$ VBoxManage hostonlyif create

@cakesummer
Copy link

cakesummer commented Jun 10, 2018

I would like to post some new procedure in the new version of VirtualBox(5.2.12 r122591 (Qt5.6.3)) as follows:
File > Host Network Manager > Create (you will get vboxnet0)
...The rest is the same as above

@genidma
Copy link

genidma commented Jun 21, 2018

Instructions shared by @AnalyzePlatypus work.

Copy link

ghost commented Nov 14, 2018

Hey i have SSH working from local host MAC to VB ubuntu VM. however from gues os ubuntu i don't have internet connectivity. what do i need to do? do i need to create 3rd adapter or can i use the same adapter for internet as well.?

@zevaverbach
Copy link

zevaverbach commented Jan 16, 2019

Resolved some difficulty with this by reading a comment on this thread: It was as simple as appending a 0 to the end of the inet value shown for eth1 after invoking ifconfig. Once I replaced 192.168.33.1 (ifconfig's inet output) with 192.168.33.10, I was able to connect.

@ranjkkum
Copy link

ranjkkum commented Jan 26, 2019

I had considerable difficulty setting up.

This is what worked for me:
I followed the gist with @chao1995's suggestions.

In the VM:

$ ifconfig
lo        Link encap:Local Loopback 
enp0s8    Link encap:Ethernet ...

My etc/network/interfaces looks like this:

$ sudo nano etc/network/interfaces
GNU nano 2.5.3 
# Added this:
# Local Interface (for SSH)
auto enp0s8
iface enp0s8 inet static
address 192.168.56.10
netmask 255.255.255.0

To bring up the service, I ran:

$ sudo ifup enp0s8

In my host terminal:

$ ssh <username>@192.168.56.10
Welcome to Ubuntu 16.04.2 LTS ...

Wahoo!

Troubleshooting Checklist

In VirtualBox Manager

  • Is Settings > Network > Adaptor 2 set to Host-Only Adaptor (vboxnet0)?
  • Is Settings > System > Enable I/O APIC checked?

In the VM

  • Is OpenSSH installed? ($ sudo apt-get install openssh-server )
  • Have you made the changes to /etc/network/interfaces, replacing eth1 with your interface name from ifconfig ?
  • Have you brought up the adaptor with $ sudo ifup <interface name>?

On your host

  • Have you determined the correct IP address to ssh into? (Runifconfig. Use the value of vboxnet0's inet field. If vboxnet0 is not available, review the section above In VirtualBox Manager)
  • Run ssh <username>@<ip address> and log in.

I hope that helps.
Good luck out there!

thanks for sharing this .. this actually summarizes the issues once can face while enabling it ..

@bigjoe2000
Copy link

bigjoe2000 commented Nov 9, 2019

I had some trouble with this on my Ubuntu 18.04, which uses netplan instead of /etc/network/interfaces

Instead, I modified /etc/netplan/50-cloud-init.yaml to the following (The 192.168.99.2 is the static IP address I chose.)

network:
    ethernets:
        enp0s3:
            dhcp4: true
        enp0s8:
            dhcp4: no
            addresses: [192.168.99.2/24]
    version: 2

After editing the file, run

sudo netplan try

That will allow you to verify it's working before changing the virtual machine's network settings.

@jhamukesh998
Copy link

jhamukesh998 commented Jan 9, 2020

@bigjoe2000 is correct. Just a add on to this: use tab in yaml file.

@thomyi
Copy link

thomyi commented Mar 3, 2020

Are you doing on the VM's Settings or the VirtualBox preference? When I do an "+" I'm only seeing a new NAT connection created. Thanks!

@letchke
Copy link

letchke commented May 25, 2020

When I'm trying to ssh in on my host, I'm asked for a password. Neither the host nor the guest pw will work, any idea?

@danielverissimo
Copy link

danielverissimo commented Jul 17, 2020

Nice

@shiouming
Copy link

shiouming commented Nov 3, 2020

VirtualBox UI had been redesigned, the UI for step #1 had been moved to File > Host Network Manager.

I'm not sure which version this change was introduced into, perhaps long time ago? I'm on v6.1.16 for MacOS.

@jmiremba
Copy link

jmiremba commented Feb 22, 2021

End-to-end, enabling connection from MacOS to hosted RHEL8 in VirtualBox 6.1

In VirtualBox (6.1.x):
- File > Host Network Manager ...
- Create (vboxnet0)

For the particular instance of VM (powered off):
- Settings > Network > Adapter 2
- Enable Network Adapter (checked)
- Attached to: Host-only Adapter
- Name: vboxnet0

Start the VM and login as root:
# nmcli dev status
	// Will show that enp0s8 is down
# nmcli con up enp0s8
# nmcli dev set enp0s8 autoconnect yes managed no
# nmcli dev connect enp0s8
# nmcli dev status
	// Will show that enp0s8 is connected
# ifconfig
	// Shows an inet IP address (192.168.56.101)

From the host (Terminal on MacOS):
$ sudo vim /etc/hosts
		*****
		192.168.56.101  vbox.rhel8
		*****
	:wq
$ ping -c 3 vbox.rhel8
$ ssh-copy-id jubilee@vbox.rhel8
$ ssh jubilee@vbox.rhel8 (using SSH keys, passwordless)

@Denis-Alexeev
Copy link

Denis-Alexeev commented May 3, 2022

When I'm trying to ssh in on my host, I'm asked for a password. Neither the host nor the guest pw will work, any idea?

I am getting permission denied when i try to log in. What password should i be trying? Thanks!

I had the same problem. The reason was: I used "root" user. So, I had added 2 lines into sshd_config (in VM):

PermitRootLogin yes
PasswordAuthentication yes

and then (in VM terminal)
systemctl restart sshd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment