Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I dont have much experience on networking or linux, but I'm trying to ssh into an Ubuntu virtual machine from outside my home network. The Ubuntu virtual machine (VirtualBox) is running an a Debian desktop. I did some research and found I had to forward port 22 from the router to the virtual machine.

-I changed the network setting on the VM to bridge.

-I'm forwarding the port to the VM.

-I checked ( to show the port as open.

But when I try to connect it is still not working. ssh username@ -- connection refuse

Is there anything I have to do inside the virtual machine to allow incoming connections? Or forward any port?

Is there anything I'm doing wrong, any help would be greatly appreciated!!

share|improve this question
How is the VM networked with host. If it behind a NAT (default on virtual box). It wouldn't work but a bridged connection should work provided you forwarded the ports correctly. – Matt Mootz May 3 '12 at 20:47
You are using ssh username@router-ip-address right? – cprofitt May 3 '12 at 21:26
yes username@public-ip-address is that right? – user1354275 May 4 '12 at 0:36
Ubuntu out-of-the-box includes OpenSSH client, which allows you to connect to another computer running SSH server. To connect 'to' Ubuntu, you need to load OpenSSH server (sudo apt-get install openssh-server) on the target machine. – david6 May 4 '12 at 8:51
up vote 7 down vote accepted

By default VirtualBox works in "NAT" mode, meaning that it builds a "virtual" network and translates network accesses from the VM so that to the outside world, they appear to come from your actual computer.

VirtualBox makes the VM think it's connected to a network, but in reality VirtualBox is providing network services, including a mini DHCP server. Then, VirtualBox does network accesses "on behalf" of the VM, making it appear as just another application running on your PC.

However this means that the outside world doesn't really know about the VM and can't access it directly.

I think the port redirection you did was from your home router to your PC, not to the VM. You may be missing some configuration on the VirtualBox side. Apologies if you already did this, but your question was not clear about this.

Basically you have to change the VM's network configuration and set it to "Bridged". What this does is, it creates a virtual interface on your PC and makes the VM use that to access the outside world; anything coming into or going to that interface gets piped to the VM. Thus, the VM will be visible as just another machine in whichever network your PC is connected to (it even has its own MAC address!).

Then, depending on your network's configuration, the VM may get a DHCP address like any other PC connected to your router, or you may need to configure a static IP address for it. This depends on how your network is set up.

Once the VM has a "real" address, you can, on your router, follow the instructions you found to route port 22 to the VM's IP address. This should work as you expect it to.

If it doesn't:

  • Look at your VM's firewall configuration (iptables -L -n). Is it blocking anything?
  • Set up another computer on your local network, and try to SSH to the VM's IP address. If you can, then you need to double-check the forwarding configuration in your router. If you can't, you need to recheck the VM's SSH and firewalling configuration.
share|improve this answer
Hi roadmr, I did change the network setting to bridge and i forward the port to the VM since it has its own ip and the router was able to find it. I have a static ip by the isp. But is still not working – user1354275 May 3 '12 at 20:48

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.