Ubuntu Server 26.04
Videos
Overview: Ubuntu Server 26.04 LTS on Azure: overview (watch on YouTube)
Launch and log in: Ubuntu Server 26.04 LTS on Azure: launch and log in (watch on YouTube)
Overview
Ubuntu Server 26.04 LTS (Resolute Raccoon) is the current long term support release of Ubuntu. Canonical released it on 23 April 2026 and provides five years of standard security maintenance for it, to April 2031. Its kernel, toolchain and library surface stay stable for years, so software you build against it keeps working without a distribution upgrade partway through a project.
This image runs Ubuntu Server 26.04 LTS on Microsoft Azure, ready to deploy from the Azure Marketplace.
What you get:
- Ubuntu Server 26.04 LTS, patched at build time
- Security updates applied with phased updates included, so no update is held back
- Unattended security upgrades enabled, so the instance keeps patching itself
- Azure Linux Agent (walinuxagent) and cloud init for Azure platform integration
- AppArmor mandatory access control enabled
- No baked password, no bundled SSH key and no swap on the operating system disk
- Generation 2 Hyper V virtual machine support
- 24/7 SecureAnyCloud support
- Platform: Microsoft Azure (Generation 2 Hyper V)
- Default user:
azureuser - Recommended size:
Standard_B2s(2 vCPU, 4 GB RAM) or larger
Prerequisites
Before you deploy this image, you need:
- An active Microsoft Azure subscription
- Access to the Azure Portal or the Azure CLI
- An SSH key pair for Linux virtual machine access
- Familiarity with Azure virtual machine management
Deploy the virtual machine
Option A: Azure Portal
- Open the Azure Marketplace and search for "Ubuntu Server 26.04 LTS SecureAnyCloud".
- Select the image and click Create.
- On the basics tab, set Subscription to your Azure subscription, Resource group to a new or existing group, Virtual machine name to a name of your choosing, and Region to your preferred Azure region.
- Set Size to
Standard_B2sor larger. - Under Administrator account, choose SSH public key and paste your public key. The user name is
azureuser. - Under Inbound port rules, allow SSH (port 22) from your own address range instead of the whole internet.
- Click Review + create, then click Create.
Option B: Azure CLI
az vm image terms accept --urn sac1647283583153:ubuntu-server-26-04:default:latest
az vm create \
--resource-group myResourceGroup \
--name my-ubuntu-2604-vm \
--image sac1647283583153:ubuntu-server-26-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardThe image ships no password and no authorized key of its own. The only credential that works is the SSH public key you supply here, which Azure injects at provisioning time.
Connect over SSH
ssh azureuser@<vm-ip>To find the public address of your virtual machine:
az vm show --subscription <sub-id> --resource-group myResourceGroup \
--name my-ubuntu-2604-vm --show-details --query publicIps -o tsvConfirm which release you are running
Confirm the release and the kernel, and check that the Azure platform integration is healthy.
cat /etc/os-releaseExpected output:
PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" VERSION_ID="26.04" VERSION="26.04 LTS (Resolute Raccoon)" VERSION_CODENAME=resolute ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=resolute LOGO=ubuntu-logouname -r uname -m hostnamectl | grep -E "Operating System|Kernel|Virtualization|Architecture"Expected output:
7.0.0-1010-azure x86_64 Virtualization: microsoft Operating System: Ubuntu 26.04 LTS Kernel: Linux 7.0.0-1010-azure Architecture: x86-64The -azure kernel flavor is the Azure tuned kernel that Canonical maintains for this platform. Confirm that the Azure Linux Agent and cloud init are present:
systemctl is-active walinuxagent.service
systemctl is-enabled walinuxagent.service cloud-init --versionExpected output:
active enabled /usr/bin/cloud-init 26.1-0ubuntu2Check for updates since the build
Ubuntu rolls out some updates in phases, so a plain apt-get upgrade can report success while some updates, including security updates, are still held back on that machine. SecureAnyCloud patches this image with phased updates explicitly included, and you can verify this yourself.
First, check that nothing is pinned to an old version:
sudo apt-get update -qq apt-mark showholdThe apt-mark showhold command prints nothing, because no package is held. A held package silently blocks its own security updates.
Now simulate an upgrade with phased updates included and count the updates that remain:
sudo apt-get -s -o APT::Get::Always-Include-Phased-Updates=true dist-upgrade | grep -c "^Inst " || trueExpected output on a freshly deployed instance, unless updates have been released since the build:
0Zero means the image has every available update applied, not only the ones your machine was offered. If you run this some weeks after deployment, the number is higher because Ubuntu has published updates since the image was captured. Apply them with sudo apt-get update && sudo apt-get -o APT::Get::Always-Include-Phased-Updates=true dist-upgrade.
Review the secure by default posture
This image ships with no known credential. There is no default password, no bundled SSH key and no shared host key. Confirm this:
sudo passwd -S root | awk '{print $1, $2}'
sudo sshd -T | grep -E "^(permitrootlogin|passwordauthentication|pubkeyauthentication)"Expected output:
root L permitrootlogin prohibit-password pubkeyauthentication yes passwordauthentication noL means the root account is locked, so there is no root password to guess. passwordauthentication no means SSH does not accept a password from anyone, so the key you supplied at deployment is the only way in. The SSH host keys and the machine identifier are regenerated on the first boot of every instance, so no two deployments share them.
AppArmor, the mandatory access control system that Ubuntu uses to confine services, is enabled:
sudo aa-status --enabled && echo "apparmor: enabled"
sudo aa-status --profiledExpected output:
apparmor: enabled 177Check resources and install your software
df -h / free -h systemctl is-system-running systemctl list-units --state=failed --no-legend | wc -lExpected output on a Standard_B2s instance:
Filesystem Size Used Avail Use% Mounted on /dev/root 28G 2.2G 26G 8% / total used free shared buff/cache available Mem: 3.8Gi 532Mi 2.9Gi 4.0Mi 614Mi 3.3Gi Swap: 0B 0B 0B running 0running with zero failed units means the system reached its target state cleanly. Swap: 0B is deliberate. Azure manages swap on the ephemeral resource disk through the Azure Linux Agent instead of on the operating system disk, so no swap is baked into the image.
The complete Ubuntu archive is available, so any package you need is one command away:
apt-cache policy nginxExpected output:
nginx: Installed: (none) Candidate: 1.28.3-2ubuntu1.8Install what you need in the usual way, for example sudo apt-get install -y nginx.
Automatic security updates
The image keeps the Ubuntu unattended upgrades mechanism enabled, so security updates apply without you logging in. Confirm the configuration:
cat /etc/apt/apt.conf.d/20auto-upgradesExpected output:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";Then confirm that the service unit is enabled:
systemctl show -p UnitFileState --value unattended-upgrades.serviceExpected output:
enabledTo see what the mechanism has done:
sudo tail -n 20 /var/log/unattended-upgrades/unattended-upgrades.log 2>/dev/null || echo "no upgrade run recorded yet on this instance"To control patching yourself, disable the service with sudo systemctl disable --now unattended-upgrades.service. You then own the patching schedule.
Restrict SSH access
Your Azure Network Security Group is the first line of defense and should already limit port 22 to your own address range. If you also want a host firewall, allow SSH first and then enable the firewall, so that you never lock yourself out.
sudo ufw allow from <your-mgmt-cidr> to any port 22 proto tcp
sudo ufw --force enable
sudo ufw status verboseReplace the example address range with the range you administer the instance from. The image ships with the host firewall inactive, so it does not interfere with your own network design.
Set the time zone and host name
The instance runs in UTC with time synchronization active, which is the right default for servers. Check the current settings:
timedatectl | head -6Expected output:
Local time: Sat 2026-07-25 17:42:38 UTC Universal time: Sat 2026-07-25 17:42:38 UTC RTC time: Sat 2026-07-25 17:42:37 Time zone: Etc/UTC (UTC, +0000) System clock synchronized: yes NTP service: activeTo change the time zone or the host name:
sudo timedatectl set-timezone Europe/London
sudo hostnamectl set-hostname web01.<your-domain>Troubleshooting
SSH refuses the connection. Password authentication is disabled by design. Connect with the private key that matches the public key you supplied at deployment, and confirm that the Network Security Group allows port 22 from your address.
A package fails to install. Refresh the package lists first with sudo apt-get update. The image ships with the archive metadata cleared so that every instance fetches a current index.
Updates appear after deployment. This is expected and healthy. The image was fully patched at capture, and Ubuntu has published updates since. Unattended upgrades apply security updates automatically. You can also apply everything immediately with a dist upgrade that includes phased updates.
Support
SecureAnyCloud supports this image 24/7. Contact sales@secureanycloud.com with your subscription identifier and the virtual machine name.
Ubuntu is a trademark of Canonical Ltd. SecureAnyCloud is not affiliated with or endorsed by Canonical Ltd. Ubuntu is free and open source software. Running Ubuntu Server requires no license key and no paid subscription.
Deploy on Azure
Launch Ubuntu Server 26.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com