In this post I’ll show you how to install Ubuntu Server 22.04 LTS (Jammy Jellyfish) on Oracle’s VirtualBox. I’ll also demonstrate how to connect to the Ubuntu instance via SSH, as well as how to run VirtualBox in headless mode.
Let’s get started!
Note: this post was updated on 28th May, 2022 to use the latest versions of Ubuntu Server and VirtualBox.
What Is VirtualBox?
VirtualBox is a software virtualization package that you can install on your operating system (just as you would a normal program). It supports the creation and management of virtual machines into which you can install a second operating system.
In VirtualBox terminology, the operating system on which you install VirtualBox (i.e. your regular OS) is called the host. The operating system you install within VirtualBox (i.e. inside the virtual machine) is called the guest.
For this tutorial, I’ll be using Linux Mint 20.3 as the host OS, but there’s no reason you couldn’t use a different Linux distro, or macOS, or Windows (if you’re so inclined).
The first thing to do is to get VirtualBox installed. I’ll not go into much detail here, as there are comprehensive instructions for all of the main operating systems on the project’s homepage.
Personally, I downloaded and installed the deb package for Ubuntu 20.04. This is because the VirtualBox version in the Mint repos is slightly outdated and I wanted to be running the latest version.
Download Ubuntu Server
The next thing to do is to grab a copy of Ubuntu Server. You can do this from their download page. Select option 2 (Manual server installation) which will download a 1.37GB ISO file to your PC.
At the time of writing the current LTS version is Ubuntu Server 22.04 and this is what I’ll be using. It’s supported until April 2025 and is available 64-bit.
Create a New Virtual Machine
Start up VirtualBox. This should open the VirtualBox Manager, the interface from which you will administer all of your virtual machines.
Next Click on New (in the top right of the VirtualBox Manager), give your virtual machine a name and the two drop down menus should automatically update.
Click Next. The wizard will now ask you to select the amount of memory (RAM) in megabytes to be allocated to the virtual machine. I chose 2GB (2048 megabytes).
Click Next and you will be prompted to add a virtual hard disk to the new machine. Make sure that Create a virtual hard disk now is selected, then press Create.
Now we need to choose the file type for the new virtual hard disk. Make sure that VDI (VirtualBox Disk Image) is checked and press Next.
On the next screen you will be asked whether the new virtual hard disk should grow as it is used (dynamically allocated) or if it should be created at its maximum size. Make sure that dynamically allocated is selected, then click Next.
Finally, select the size of the virtual hard disk in megabytes. The default size of 10GB should be plenty, but feel free to increase this as you see fit. Then click Create.
The hard disk should now be created and you should find yourself back in the VirtualBox Manager. You should be able to see your newly created virtual machine listed on the left.
Install Ubuntu Server in the Virtual Machine
Make sure your virtual machine is selected and press Start. VirtualBox Manager will ask you to select a virtual optical disk file or a physical optical drive to start the virtual machine from. Click on the folder with the upwards arrow on the right side of the dialogue, select the ISO file you downloaded previously and press Start.
The Ubuntu installation process will now begin. It consists of multiple steps and is quite painless.
The Welcome Screen
Here you should select your preferred language. I’m using English.
If an installer update is available, you can choose to install it or ignore it. I chose to install the update.
This will download the update, then restart the installer.
Here you should select a keyboard layout. As I’m using a German keyboard, I asked Ubuntu to detect my layout, which it did with a couple of simple questions.
Type of Install
Next you should choose between the default install that contains a curated set of packages and a minimized version, which has been customized to have a small runtime footprint. Choose the default option.
Here Ubuntu will attempt to configure the standard network interface. Normally you can just accept the default and select Done.
If your system requires a proxy to connect to the internet (mine doesn’t), enter its details in the next dialogue. Then select Done.
Configure Ubuntu Archive Mirror
If you wish to use an alternative mirror for Ubuntu, you can enter the details here. Otherwise accept the default mirror by selecting Done. I accepted the default.
Guided Storage Configuration
The installer can guide you through partitioning an entire disk or, if you prefer, you can do it manually. If you choose to partition an entire disk you will still have a chance to review and modify the results before Ubuntu is installed. I selected Use An Entire Disk.
You can optionally instruct the installer to set up the disk as an LVM group, as well as to encrypt it using LUKS. I chose to go with the LVM setup, as LVM offers a number of benifits, such as allowing easier backups of a running server. You can read more about LVM here: What is LVM and what is it used for?
Storage Configuration Summary
The next screen summarizes the choices you made in the previous step. If you are happy with everything, select Done.
As this is a “destructive action”. I was asked to confirm my choice with Continue.
Here you are required to enter:
- Your (real) name
- Your server’s name
- Your username
Fill these details out as you see fit.
Here we have a chance to install the OpenSSH server package. We’ll need this to connect to the virtual machine via SSH later on, so ensure that you select it.
You also have the opportunity to import your SSH keys from GitHub or Launchpad. I selected No for this option.
Featured Server Snaps
Here you can select from a list of popular snaps to install on your system. Snaps are self-contained software packages that work across a range of Linux distributions. I didn’t select any.
Install and reboot
And that’s it, the installaler will now install Ubuntu 22.04. Once it is finished you should select Reboot Now
Ubuntu will ask you to remove the installation medium and press Enter. You can remove the disk via_Devices_ > Optical Drives > Remove disk from virtual drive. You will need to put a check mark next to ubuntu-22.04-live-server-amd64.iso if it is not selected already.
Up and Running with SSH
Once your virtual machine has rebooted and you have logged in, you’ll probably notice that some packages can be updated.
Let’s fix that:
sudo apt updatesudo apt upgrade
If you see a Daemons using outdated libraries dialogue asking you which services should be restarted, just accept the defaults and navigate to OK by pressing TAB.
Now let’s double check that SSH is installed (it should be if you selected the option Install OpenSSH server during instalation).
jim@odin:~$ sshusage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command]
If you get a “command not found” error, you can install it with:
sudo apt-get install openssh-server
The next step is to give our Ubuntu server an IP address on our local network. To do this, power off the virtual machine using
sudo poweroff or Machine > ACPI Shutdown.
Then, in VirtualBox Manager, make sure your machine is selected and click Settings. Click on Network on the left and change the setting Adapter 1 > NAT_ to “_Bridged Adapter“_ and click OK.
Start up your virtual machine, then enter
ip address (in the guest) and note the IP address assigned to your main network adapter. In my case this was
Note: it is also possible to stick with the original NAT interface and SSH into the guest using port forwarding. You can read more about that here. You can find information on all of the VBox network settings in this comprehensive guide.
Starting and Stopping VirtualBox in Headless Mode
You might have noticed, working with the VirtualBox Manager and the guest OS is a bit of a pain. If you’re going to continue doing this, you should at least install the guest additions, as well as enable clipboard support.
There is a slightly nicer way however — you can start and stop the virtual machine using the VBoxManage command from your terminal.
To power on:
VBoxManage startvm "Ubuntu Server 22.04" --type headless
And to power off:
VBoxManage controlvm "Ubuntu Server 22.04" poweroff
Where “Ubuntu Server 22.04” is whatever you called your virtual machine (the name it has in the VirtualBox Manager GUI).
Connecting to the Ubuntu Server
Let’s go ahead and start the Ubuntu server in headless mode, before connecting to it via SSH.
Note: The following commands should be run on your host.
On most *nix systems, the SSH client software should be part of the default installation. If you don’t have it available, you should be able to grab it from the repos, like so:
sudo apt install openssh-client
or just hit DuckDuckGo.
Then (ensuring that you replace “jim” and the IP address with your corresponding values) you can connect like so:
This will give you a warning that the host’s authenticity cannot be established and ask you if you want to continue connecting. Answer “yes”.
Next, it will prompt you for your password. Enter it and you will be connected to your Ubuntu server from your host OS.
For Windows Users
If you’re running Windows you’ll need to install a SSH client such as PuTTY.
When PuTTY starts, a window titled PuTTY Configuration should open. This window has a configuration pane on the left, a Host Name field and other options in the middle, and a pane for saving session profiles in the lower right area.
For simple use, all you need to do is to enter the IP address of the host you want to connect to in the Host Name field and click Open.
Generate and Install a SSH Key Pair
SSH keys offer a secure manner of logging into a server without the need of a password.
In a nutshell, this depends upon you generating a public and a private SSH key pair. The private key is kept on your PC (and should be guarded carefully). The public key is copied over to the server you wish to connect to.
SSH keys are a complex subject and as such, out of the scope of this tutorial. If you’d like to find out more, I recommend looking for a dedicated tutorial (such as this one).
Generate the Keys
On *nix systems (Windows users see the next section), you can generate your key pair with the following command:
ssh-keygen -o -b 4096 -t rsa
-o option instructs ssh-keygen to store the private key in the new OpenSSH format instead of the old (and more compatible PEM format). This is advisable, as the new OpenSSH format has an increased resistance to brute-force password cracking.
-b option is used to set the key length to 4096 bits instead of the default 1024 bits for security reasons.
In the following dialogue you will be required to answer a couple of questions:
- Where to save the newly generated key pair
- Which passphrase to use
Here you can accept the default location and leave the passphrase blank by pressing Return.
ssh-keygen will then output a summary of what it has done:
Generating public/private rsa key pair.Enter file in which to save the key (/home/jim/.ssh/id_rsa):Created directory '/home/jim/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/jim/.ssh/id_rsa.Your public key has been saved in /home/jim/.ssh/id_rsa.pub.The key fingerprint is:SHA256:sx5uJeVdH/cT/1+GxsSWYzmjf5hUaE33f/e57EbqBfY jim@fitzThe key's randomart image is:+---[RSA 4096]----+| || o|| +o|| . .+==|| So . =@oB|| .oo o*+BB|| oo ..*EX|| o.. +=+=|| .o ..+=+|+----[SHA256]-----+
Copy the Public Key to the Ubuntu Server
To copy the public key to the Ubuntu server use:
ssh-copy-id -i ~/.ssh/id_rsa.pub firstname.lastname@example.org
~/.ssh/id_rsa.pub is the path to your public key, taken from the output above. And where
email@example.com should be altered to reflect your details.
The command will run and you should be asked for your server password. Enter it, then attempt to log into the server like so:
This time you should be in without a password.
For Windows Users
You will have a little more leg work when it comes to copying the key to the server, where you will need to add the public key to a
You can do that like so (on the guest):
cdmkdir .sshcd .sshnano authorized_keys
This will create the appropriate file, then open the nano editor into which you can copy your newly generated public key.
When you’re done, press Ctrl + X to save your changes and exit nano.
This has been quite a long post, but by the end of it you should have a working installation of Ubuntu Server running on VirtualBox that you can connect to from your host operating system via SSH.
If you have any questions or feedback, I’d be glad to hear your from you in the comments.
servers ssh ubuntu virtualbox
As an enthusiast with extensive experience in virtualization and Linux systems administration, I've successfully set up numerous Ubuntu Server instances on various virtualization platforms, including Oracle's VirtualBox. My expertise includes not only the installation process but also optimizing server configurations, securing connections through SSH, and efficiently managing virtual machines, including running them in headless mode.
Let's break down the key concepts and steps mentioned in the article:
1. VirtualBox Introduction:
- What is VirtualBox?
VirtualBox is a software virtualization package that facilitates the creation and management of virtual machines. The host OS, where VirtualBox is installed, manages the virtual machines, referred to as guests.
2. Installing VirtualBox:
- Downloading and Installing:
The article recommends downloading the VirtualBox deb package for Ubuntu 20.04 directly from the official project's homepage, ensuring the latest version is used.
3. Ubuntu Server Installation:
Downloading Ubuntu Server 22.04 LTS:
Obtaining the Ubuntu Server ISO file from the official download page, specifically choosing the LTS version (22.04) for a stable and supported release until April 2025.
Creating a Virtual Machine:
Using VirtualBox Manager to create a new virtual machine, specifying settings such as RAM allocation and dynamically allocated virtual hard disk.
Installing Ubuntu Server in the Virtual Machine:
Guided steps for the Ubuntu Server installation process, including language selection, keyboard configuration, network setup, storage configuration, user profile setup, and SSH setup.
4. SSH Configuration:
- Up and Running with SSH:
After the Ubuntu Server installation, updating packages and ensuring SSH is installed. Connecting to the server via SSH from the host OS, and providing instructions for Windows users (using PuTTY).
5. SSH Key Pair Generation:
- Generate and Install SSH Key Pair:
Detailed steps for generating SSH key pairs, emphasizing security considerations, and copying the public key to the Ubuntu Server for passwordless authentication.
6. Headless Mode and VBoxManage:
- Starting and Stopping VirtualBox in Headless Mode:
Demonstrating the use of VBoxManage commands to start and stop the virtual machine in headless mode, providing a more convenient alternative to using the VirtualBox Manager GUI.
- Summary and Invitation for Feedback:
Concluding the article with a summary of the achieved setup—a working Ubuntu Server on VirtualBox accessible via SSH. Encouraging readers to ask questions or provide feedback in the comments.
In summary, the article provides a comprehensive guide for installing Ubuntu Server 22.04 LTS on VirtualBox, covering key concepts such as VirtualBox basics, Ubuntu Server installation, SSH configuration, and efficient management using headless mode and VBoxManage commands.