WARNING: This page is archived and not updated. Please bear in mind any information may be incorrect and any code may not work. Use at your own risk.
James Gardner: Home > Blog > 2008 > SSH to a Debian Etch Virtual...

SSH to a Debian Etch Virtual Machine in VirtualBox

Posted:2008-08-20 14:19
Tags:Debian, Virtulization

VirtualBox uses NAT networking so that the running machine appears to the outside world to be the same as the host. This isn't a lot of use if you want to SSH from the host to the virtual machine. Luckily there is a work around using port forwarding described at http://mydebian.blogdns.org/?p=148

The essence of the technique is to type these commands to forward port 2222 to port 22 replacing <guestname> with the VirtualBox name for the guest, in my case "Etch 2":

$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP

You'll need to power off and power on the virtual machine (not just restart it) then you will be able to SSH in with this:

$ ssh -p 2222 root@localhost

You can do the same with other ports such as 80:

$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 8080
$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" 80
$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" TCP

You Apache server will be available at http://localhost:8080

It appears you can choose whatever name you like eg ssh, apache etc but if you use the same key twice the second settings will over-write the first.

This isn't completely ideal so if anyone knows a good way of setting up bridged networking for VirtualBox on Mac OS X please let me know.

Update 2008-12-19: If you get this error:

ssh_exchange_identification: Connection closed by remote host

It could simply be because you forgot to install openssh-server on the guest OS. I made that mistake today and it took me 15 minutes of Googling obscure articles to figure out!

(view source)

James Gardner: Home > Blog > 2008 > SSH to a Debian Etch Virtual...