A graphical SSH client with saved sessions, PuTTYgen, and PPK key support still makes PuTTY useful on Ubuntu when you want more than a plain terminal window for remote access. You can install PuTTY on Ubuntu from the default repositories for the distro-packaged build or from Flathub for a sandboxed release that stays consistent across supported LTS versions.
If you are looking for a PuTTY download on Ubuntu, the Ubuntu package and the Flathub build are safer choices than random third-party .deb mirrors. The package installs cleanly from a local terminal, an SSH session, or Ubuntu Server, but the main putty window still needs an active graphical session to open, and the steps below work on Ubuntu 26.04, 24.04, and 22.04.
Install PuTTY on Ubuntu
APT fits most Ubuntu systems because the distro maintains the package and the companion tools install directly into your shell. Flatpak is useful when you want the same newer PuTTY build across all supported Ubuntu LTS releases.
| Method | Channel | Version | Updates | Best For |
|---|---|---|---|---|
| APT | Ubuntu repositories | Distribution default | Ubuntu package updates | Most users, shell integration, direct access to plink, pscp, and puttygen |
| Flatpak | Flathub | Latest Flathub build | sudo flatpak update | Sandboxed desktop install with the same PuTTY release across supported Ubuntu LTS versions |
Update Ubuntu before installing PuTTY
Refresh the package index and install pending system updates before you add PuTTY.
sudo apt update && sudo apt upgrade
These commands use
sudofor package-management tasks that need root privileges. If your account does not have sudo access yet, follow the guide to add a new user to sudoers on Ubuntu before you continue.
Install PuTTY with APT on Ubuntu
Install PuTTY on Ubuntu with the distro package when you want the GUI client and the companion shell tools in one APT-managed workflow.
sudo apt install putty putty-tools
The putty package installs the graphical client. The putty-tools package adds plink, pscp, and puttygen, which matters if you want PuTTY’s command-line tools instead of only the desktop window.
apt-cache policy putty
putty:
Installed: 0.83-3build1
Candidate: 0.83-3build1
Version table:
*** 0.83-3build1 500
500 http://au.archive.ubuntu.com/ubuntu resolute/universe amd64 Packages
100 /var/lib/dpkg/status
That is the current output on Ubuntu 26.04. Ubuntu 24.04 installs 0.81-1, and Ubuntu 22.04 installs 0.76-2, so the APT package version depends on the LTS release you are running.
Install PuTTY from Flathub on Ubuntu
Ubuntu does not preinstall Flatpak, so add it first if you want the sandboxed PuTTY build. If you need the full Flatpak setup first, follow the guide to install Flatpak on Ubuntu.
sudo apt install flatpak
Add Flathub at system scope so the remote, the app, and later updates all use the same installation scope.
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
The --if-not-exists flag avoids duplicate-remote errors, and sudo keeps Flathub in system scope instead of hitting the Ubuntu permission error that appears with a bare flatpak remote-add command.
sudo flatpak remotes
flathub system
sudo flatpak install -y flathub uk.org.greenend.chiark.sgtatham.putty
The -y flag answers the Flatpak confirmation prompt automatically, which makes the command easier to paste into a fresh terminal session.
The Flathub package is community built, not an upstream-verified PuTTY release. It is still a practical option when you want a sandboxed desktop install with the same build across Ubuntu 26.04, 24.04, and 22.04.
sudo flatpak info uk.org.greenend.chiark.sgtatham.putty | sed -n '1,10p'
The pipe to sed -n '1,10p' trims the metadata to the first 10 lines so you can focus on the app ID, version, origin, and installation scope.
PuTTY - SSH, Telnet and Rlogin client
ID: uk.org.greenend.chiark.sgtatham.putty
Ref: app/uk.org.greenend.chiark.sgtatham.putty/x86_64/stable
Arch: x86_64
Branch: stable
Version: 0.83
Origin: flathub
Installation: system
The Flathub build currently reports version 0.83 on Ubuntu. If you want the PuTTY companion tools directly in your shell, the APT method is still the cleaner Ubuntu fit.
Launch PuTTY on Ubuntu
The package installs fine from SSH or on Ubuntu Server, but the main putty window only opens from an active graphical session. For terminal-only SSH work, use plink, pscp, or Ubuntu’s native OpenSSH tools instead of the GUI client.
Launch PuTTY from a desktop terminal on Ubuntu
Start the graphical client from a local desktop terminal with the standard PuTTY command.
putty
If the shell prints Gtk-WARNING **: cannot open display:, you are in a headless shell and need to launch PuTTY from a logged-in desktop session instead.
Launch PuTTY from the applications menu on Ubuntu
Open the launcher when you prefer starting PuTTY from the Ubuntu desktop menu.
- Click Activities in the top-left corner of the desktop.
- Open Show Applications to browse installed software.
- Type PuTTY into the search field.
- Select the PuTTY icon to open the client.

Review the PuTTY interface on Ubuntu
The main PuTTY window groups the settings you need for saved sessions, protocols, and connection details.
- Enter the hostname or IP address of the remote system.
- Choose the connection type, such as SSH, Telnet, or Raw TCP.
- Save session profiles, adjust ports, and tune terminal behavior before you connect.

Use PuTTY tools on Ubuntu
The putty-tools package is where PuTTY becomes useful beyond the GUI. It installs plink for terminal-only SSH sessions, pscp for transfers, and puttygen for key generation and key conversion.
Open terminal-only SSH sessions with Plink on Ubuntu
Use plink when you want PuTTY’s terminal-side SSH client instead of the graphical window.
plink user@host
For example, this connects to a remote host as root:
plink root@192.168.1.100
Transfer files with PSCP on Ubuntu
Use pscp when you need PuTTY’s SCP-style transfer tool, especially in workflows that still revolve around PuTTY key files.
Upload a file to a remote server with:
pscp local_file user@host:remote_path
This example uploads document.txt to the remote /root directory:
pscp /home/user/document.txt root@192.168.1.100:/root/document.txt
Download a remote file back to the local system with:
pscp user@host:remote_file local_path
This example downloads the same file into the local home directory:
pscp root@192.168.1.100:/root/document.txt /home/user/
Ubuntu already includes OpenSSH tools, so
scpis often enough once you install OpenSSH on Ubuntu. Keep PSCP when you want PuTTY’s own transfer tool or PPK-oriented workflows.
Generate and convert keys with PuTTYgen on Ubuntu
Run puttygen from a desktop session when you want the graphical key generator for RSA, ECDSA, or Ed25519 keys.
puttygen
In headless shells, puttygen falls back to usage text instead of opening a window. To convert an existing OpenSSH private key into PuTTY’s PPK format, use the command-line mode instead:
puttygen openssh_key -O private -o converted_key.ppk
Compare PuTTY versions on Ubuntu
The Ubuntu repository version depends on the LTS release, while the Flathub build stays on the same branch across supported Ubuntu versions.
| Ubuntu release | Default APT package | Support status | Best fit |
|---|---|---|---|
| Ubuntu 26.04 | 0.83.x | Current LTS in scope | Closest Ubuntu-packaged branch to current upstream |
| Ubuntu 24.04 | 0.81.x | Established LTS | Stable Noble package with full APT integration |
| Ubuntu 22.04 | 0.76.x | Oldest supported LTS | Jammy users who prefer distro packages over Flatpak |
If you want the same newer PuTTY release on every supported Ubuntu LTS version, the Flathub build currently reports 0.83 across the board.
Troubleshoot PuTTY on Ubuntu
Most PuTTY problems on Ubuntu come down to display access, remote SSH availability, or key-format mismatches. These checks keep each issue tied to a clear cause and a quick fix.
Fix PuTTY display errors on Ubuntu
When PuTTY is installed from SSH or on a minimal Ubuntu system, the package can be present even though the GUI cannot open yet.
(putty:12345): Gtk-WARNING **: cannot open display:
Check whether your current shell has a live graphical display before you try to launch the client.
echo $DISPLAY
:0
If the variable is empty, sign into a local Ubuntu desktop session and run putty there. For headless work, use plink, pscp, or Ubuntu’s OpenSSH tools instead of the GUI client.
Fix refused SSH connections in PuTTY on Ubuntu
A connection-refused error means the remote side is reachable but nothing is accepting the SSH session on the requested port.
Network error: Connection refused
Use verbose SSH output to confirm the refusal before you troubleshoot the remote host.
ssh -v root@192.168.1.100
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22. debug1: connect to address 192.168.1.100 port 22: Connection refused ssh: connect to host 192.168.1.100 port 22: Connection refused
If you see those lines, the remote SSH service is down, listening on a different port, or blocked by a firewall. On Ubuntu targets, follow the guide to install OpenSSH on Ubuntu if the host is missing sshd, or install and configure UFW on Ubuntu so port 22 is reachable.
Fix PPK authentication errors in PuTTY on Ubuntu
OpenSSH servers usually expect standard OpenSSH keys, not PuTTY’s PPK format.
PuTTY Fatal Error: Unable to use key file
Convert the private key to OpenSSH format when the remote host rejects the PPK file.
puttygen mykey.ppk -O private-openssh -o mykey_openssh
After the conversion, use mykey_openssh with ssh, scp, or any server that only accepts the standard OpenSSH key format.
Update or remove PuTTY on Ubuntu
APT and Flatpak handle PuTTY updates differently, so keep the maintenance commands tied to the method you installed.
Update APT-installed PuTTY on Ubuntu
Update the distro package without upgrading unrelated packages by targeting PuTTY directly.
sudo apt install --only-upgrade putty putty-tools
The --only-upgrade flag tells APT to refresh packages that are already installed without pulling in new package names you were not using before.
Check the installed APT version afterward.
apt-cache policy putty
putty:
Installed: 0.83-3build1
Candidate: 0.83-3build1
Version table:
*** 0.83-3build1 500
500 http://au.archive.ubuntu.com/ubuntu resolute/universe amd64 Packages
100 /var/lib/dpkg/status
Update Flatpak PuTTY on Ubuntu
Update the system-scope Flatpak build with Flatpak’s normal application update command.
sudo flatpak update uk.org.greenend.chiark.sgtatham.putty
Flatpak prints Nothing to do. when the installed PuTTY app is already current.
Remove APT-installed PuTTY on Ubuntu
Remove the package first, then clear any orphaned dependencies that are no longer needed.
sudo apt remove putty putty-tools
sudo apt autoremove -y
Package removal does not delete saved sessions automatically. PuTTY stores saved sessions in
~/.putty/sessions, so remove the~/.puttydirectory only if you want to wipe those profiles and any other PuTTY user settings.
Delete the PuTTY profile directory only when you are sure you no longer need its saved data.
rm -rf ~/.putty
Confirm that the APT package is no longer installed.
apt-cache policy putty
putty:
Installed: (none)
Candidate: 0.83-3build1
Version table:
0.83-3build1 500
500 http://au.archive.ubuntu.com/ubuntu resolute/universe amd64 Packages
On Ubuntu 24.04 the candidate line shows 0.81-1, and on Ubuntu 22.04 it shows 0.76-2, but Installed: (none) is the part that confirms removal.
Remove Flatpak PuTTY on Ubuntu
Remove the app first, then clear any unused runtimes that were only there for PuTTY.
sudo flatpak uninstall -y uk.org.greenend.chiark.sgtatham.putty
sudo flatpak uninstall -y --unused
The first command removes the app, and --unused cleans runtimes that nothing else still depends on. The -y flag answers the removal prompt automatically.
Verify the result with the installed-app list. No output means the PuTTY Flatpak is gone.
sudo flatpak list --app | grep -i putty
The grep -i putty filter shows only PuTTY rows, so blank output means the app is gone.
PuTTY on Ubuntu FAQ
Yes. Installing putty with putty-tools adds the GUI client plus plink, pscp, and puttygen. The companion putty-tools package is what exposes those extra shell commands.
Yes. The package installs cleanly from a remote shell or on Ubuntu Server, but the main putty window still needs a graphical session to open. For headless systems, use plink, pscp, or Ubuntu’s built-in OpenSSH tools instead of the GUI client.
Use APT when you want the most natural Ubuntu integration and direct shell access to plink, pscp, and puttygen. Use Flatpak when you want a sandboxed desktop install and the same newer PuTTY branch across Ubuntu 26.04, 24.04, and 22.04.
Ubuntu already ships PuTTY in the universe repository, and Flathub offers a community-built Flatpak for supported Ubuntu LTS releases. Those package-managed installs are the safest way to get PuTTY on Ubuntu instead of pulling random .deb files from third-party mirrors.
Conclusion
PuTTY is installed on Ubuntu with the desktop client ready for GUI sessions and the companion tools ready for file transfers, key conversion, and terminal-only SSH work. If you want to lean harder on Ubuntu’s native stack next, install OpenSSH on Ubuntu for the server side or install and configure UFW on Ubuntu so remote access stays reachable without opening more than you need.
Good morning, I have the following error
(putty:49401): Gtk-CRITICAL **: 09:10:26.330: gtk_box_gadget_distribute: assertion ‘size >= 0’ failed in GtkScrollbar
(putty:49401): Gtk-CRITICAL **: 09:10:26.334: gtk_box_gadget_distribute: assertion ‘size >= 0’ failed in GtkScrollbar
(putty:49401): Gtk-CRITICAL **: 09:10:26.337: gtk_box_gadget_distribute: assertion ‘size >= 0’ failed in GtkScrollbar
Thanks for reporting this, ysa. These GTK-CRITICAL warnings about scrollbar distribution are cosmetic rendering messages from PuTTY’s GTK interface. They do not affect PuTTY’s functionality or SSH connections. The warnings appear because PuTTY’s GTK code encounters edge cases with certain scrollbar sizes during window initialization.
PuTTY should work normally despite these messages. If the application is otherwise functional, you can safely ignore the warnings. They only appear in the terminal you launched PuTTY from, not in PuTTY’s own terminal window. To avoid seeing these warnings, launch PuTTY from your applications menu instead of the command line.
If PuTTY crashes or fails to display properly, verify your GTK libraries are up to date with
sudo apt update && sudo apt upgrade. Alternatively, try the Flatpak version documented in the guide, which bundles its own GTK runtime and avoids conflicts with system libraries.Putty only connect to a serial port if running as root. Why?
Thanks for your comment, Bruno. Serial ports on Linux are restricted to the root user and
dialoutgroup by default for security reasons. To allow your user account to access serial devices without root privileges, follow these steps:First, add your user to the
dialoutgroup:After running the command, log out completely and log back in for the group membership to take effect. Verify the change with:
Expected output showing
dialoutin your groups:Next, verify the serial port permissions. Check the device file you want to use:
Expected output showing
dialoutgroup ownership:The
rw-permissions for thedialoutgroup allow read and write access. Once you are in thedialoutgroup and logged back in, PuTTY will connect to serial ports without requiring root access.Thanks for answering
I am already in the dialout group. Other apps, like minicom, works as expected. Any other hint for me?
Thanks for the follow-up, Bruno. Since you are already in the
dialoutgroup and Minicom works without root, this points to a PuTTY-specific configuration issue rather than system permissions. Let me walk you through diagnosing this.First, verify PuTTY can see the serial device. Launch PuTTY from the terminal to see any error messages:
In the PuTTY configuration window, select Serial as the connection type and enter your serial port path (for example,
/dev/ttyUSB0). If PuTTY shows a permissions error in the terminal when you click Open, run this command to check the exact device permissions:Expected output confirming group membership and permissions:
If the output shows you are in the
dialoutgroup but PuTTY still fails, this is typically caused by one of three issues. First, some Ubuntu systems have AppArmor or SELinux policies that restrict PuTTY specifically. Check if AppArmor is blocking PuTTY:If PuTTY appears in the output, temporarily disable the AppArmor profile to test:
Second, verify the serial device node has correct permissions. Some systems recreate device nodes with restrictive permissions on boot. If
ls -l /dev/ttyUSB0shows anything other thancrw-rw----withdialoutgroup, create a udev rule to fix permissions permanently:Third, if you installed PuTTY via Flatpak, the sandboxed environment may block direct hardware access. Flatpak applications require explicit permissions for device access. Grant PuTTY access to serial devices:
After running the override command, restart PuTTY and try connecting again. If you installed PuTTY via APT instead of Flatpak, this step does not apply. Let me know which of these resolves the issue, or if you see specific error messages when launching PuTTY from the terminal.