59

I have a mac host, and a VirtualBox Linux guest, currently using Bridged mode.

I need to be able to easily SSH into the guest from the host. It would be nice to use a hostname, but a never-changing IP address would be fine too (currently, the IP changes with each new network I join, and the hostname has never worked).

I also need internet access from the guest.

Other machines on the network do not need access to the guest.

What is the best way to configure my VirtualBox network?

1

5 Answers 5

42

First, you'll have to create the vboxnet0 interface.

VirtualBox > File > Preferences > Network > Host-only Networks > Add (you will get vboxnet0)

Then, run this on the host machine. You'll see a new interface, vboxnet0, appeared.

ifconfig

Shutdown your VM and do:

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

Start VM, on guest run

ifconfig

and check ip

Check these links:

  1. https://forums.virtualbox.org/viewtopic.php?f=8&t=40076
  2. http://www.wiredrevolution.com/virtualbox/setup-ssh-access-between-virtualbox-host-and-guest-vms

There is also solution for NAT but I haven't checked it.

Configuring port forwarding with NAT in your host machine

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"

connect to your linux via the port 2222 of your host machine

ssh -l -p 2222 localhost

For host-only networking with static ip check this:

https://stackoverflow.com/questions/5906441/how-to-ssh-to-a-virtualbox-guest-externally-through-a-host/27152153#27152153

It's for Solaris 10 and Ubuntu 16.04 but should be easy to adapt.

5
  • 2
    Thanks, I ended up enabling the VirtualBox port forwarding and am able to connect via ssh localhost -p 7022. May 13, 2012 at 22:39
  • Nice, the port forwarding worked like charm. Although I did the config in the Virtualbox GUI rather than with VBoxManage. There you need to set your host and guest IP adress as well, which should be 127.0.0.1 and 10.0.2.15 respectively. Nov 26, 2012 at 19:09
  • Minor edit to the first sentence. It should read: VirtualBox > Settings > Network > 'Host-only Networks' > Add (you will get vboxnet0) Jul 8, 2014 at 6:47
  • I've done all of this for the host-only setup, and when I try to ssh in from my host, it just hangs (until it times out). Is there anything else? Dec 24, 2015 at 0:44
  • for full command line on the hostonly vboxnet0 see here VBoxManage hostonlyif create VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 VBoxManage dhcpserver add --ifname vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0 --lowerip 192.168.56.100 --upperip 192.168.56.200 VBoxManage dhcpserver modify --ifname vboxnet0 --enable
    – user51127
    Feb 23, 2022 at 21:54
46

Between two Linux machines (a 32-bit Ubuntu host and a 64-bit Ubuntu VM), I managed to get ssh working using this Port Forwarding:

enter image description here

Then from your host system run

ssh -p 5679 127.0.0.1

Substitute 5679 with the "Host Port" entered into the Port Forwarding Rules.

2
  • 8
    I did exactly the same, just without entering any "Host IP" and "Guest IP". Apr 14, 2013 at 10:14
  • In my case, the ubuntu image did not came with ssh installed (I would have expected to). So I ran 'apt-get install openssh-server' and was able to connect with 'ssh -p 5679 localhost'. Based on the other comments, I did not put any host or guest IP. Jun 5, 2016 at 20:09
3

If you don't want to mess around with port forwarding, you can set up a host-only adapter which appears as a host interface and then add an IP address inside that subnet in the guest.

Steps:

  • Create a host-only network in Virtualbox (GUI -> settings -> network). Type ifconfig in the host and see something like vboxnet0 with inet 192.168.50.1
  • in guest, add an IP address: ifconfig eth1 192.168.50.101 netmask 255.255.255.0 up
  • in host, execute ssh [email protected]

Further reading:

1

You might be better off configuring your virtual NIC in NAT mode if you are moving around quite a bit. Using NAT, the host (your PC) becomes the DHCP server and router for a private network which is created for your guest OSes. I'm pretty sure you can set a static address using NAT also...

However, I think the best solution is to suss out why name resolution isn't working for your guest VM :)

https://www.virtualbox.org/manual/ch06.html#network_nat

1
  • 2
    I setup NAT mode, and my guest is assigned the ip 10.0.2.15. However, from the host (whose IP is 192.168.1.120), I am not able to reach the guest. The guide was able to explain the different modes for me, but it didn't seem to have a solution for my problem. May 13, 2012 at 20:46
0

Very helpful, put me in the right direction. Thanks.

I had to go to > VirtualBox > File > Host Network Manager > vboxnet0 > Configure Adapter Manually > IPv4 Address and set it to the ifconfig of the guest. For some reason the host and the guest were giving me different IPs.

It is mentioned but to be explicit, I had to set the port forwarding port for 127.0.0.1 to 5679 and not the default ssh port 22, as that is already in use by the host's own ssh communication.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .