Guides

Linux remote desktop to Windows: Remmina, FreeRDP and the ERRCONNECT errors

Linux remote desktop to Windows with Remmina or FreeRDP (xfreerdp3): NLA, certificates, monitors, sound, drives, gateways and ERRCONNECT errors.

Published ~9 min read
On this page

Short answer: to remote into Windows from Linux, install Remmina with its RDP plugin (sudo apt install remmina remmina-plugin-rdp) or use FreeRDP on the command line: xfreerdp3 /v:203.0.113.10 /u:Administrator /dynamic-resolution /cert:tofu. Windows must be a Pro, Enterprise, Education or Server edition with Remote Desktop switched on, and its RDP port must be reachable from your machine.

the short version
# Ubuntu 24.04 and 26.04, Debian 13
sudo apt install -y remmina remmina-plugin-rdp freerdp3-x11
xfreerdp3 /v:203.0.113.10 /u:Administrator /dynamic-resolution +clipboard /cert:tofu

# Fedora
sudo dnf install -y remmina remmina-plugins-rdp freerdp
xfreerdp /v:203.0.113.10 /u:Administrator /dynamic-resolution +clipboard /cert:tofu

Replace 203.0.113.10 with the Windows machine’s address. FreeRDP asks for the password when you leave out /p:, which keeps it out of your shell history. The Linux part of the general RDP guide covers the first connection; this page goes further: Remmina profiles with NLA and a gateway, FreeRDP’s options for monitors, sound and drives, and what each ERRCONNECT error means. It is written from the FreeRDP man pages (xfreerdp 2.10 on Debian 12, xfreerdp3 on Debian 13), FreeRDP’s source for the error names, Remmina’s documentation and the distributions’ package lists, as of October 2026.

Which RDP client should you use on Linux?

ClientKindPackagesGood for
RemminaGraphical, saved profilesremmina + remmina-plugin-rdp (Fedora: remmina-plugins-rdp), or Flatpak org.remmina.RemminaDaily use; it runs RDP through FreeRDP
FreeRDPCommand linefreerdp3-x11 or freerdp2-x11; Fedora: freerdpScripts, quick tests, exact error names
KRDCGraphical (KDE)krdcKDE Plasma desktops; also built on FreeRDP
GNOME ConnectionsGraphical (GNOME)gnome-connectionsSimple connections with few settings
rdesktopCommand linerdesktopNothing any more: unmaintained

rdesktop is still in Debian’s archive, but its own README says the project is no longer maintained, and its last release, 1.9.0, dates from 2019. Old tutorials still use it; use FreeRDP instead, whose options are similar enough that the translation takes a minute.

What Windows needs before you connect

  • The right edition. Per Microsoft Learn, Windows Pro, Enterprise and Education accept Remote Desktop connections, and so does Windows Server. Windows Home can connect out, but nobody can connect in.
  • Remote Desktop on, and your user allowed. Settings → System → Remote Desktop on a PC; on a server, see enabling RDP on Windows Server. Administrators may always connect; other accounts go in the Remote Desktop Users group.
  • A reachable port. TCP 3389 by default. Test from Linux with nc -vz -w 5 203.0.113.10 3389; if that times out, no client setting will help, and Remote Desktop can’t connect goes through the server side.
  • Network Level Authentication. It is on by default, and both Remmina and FreeRDP support it, so leave it on. Network Level Authentication explains what it checks.
  • From outside the network, a VPN or an SSH tunnel is safer than forwarding port 3389 of a home PC to the internet.

How do you connect with Remmina?

install
sudo apt install -y remmina remmina-plugin-rdp remmina-plugin-secret     # Debian, Ubuntu
sudo dnf install -y remmina remmina-plugins-rdp remmina-plugins-secret   # Fedora
flatpak install flathub org.remmina.Remmina                               # any distribution

The secret plugin stores saved passwords in your desktop’s keyring instead of in Remmina’s own files. The Flatpak build follows Remmina’s releases more closely than an LTS distribution does.

  1. 1Create a profile

    Click the + button for a new connection profile, give it a name and set the protocol to RDP.

  2. 2Fill in the Basic tab

    Server takes the IP address or host name, with :13389 after it if RDP listens on another port. Enter the user name and password; leave Domain empty for a local Windows account. Pick a resolution (the client’s own resolution is the easy choice), and add a shared folder here if you want one.

  3. 3Check the Advanced tab

    Leave Security protocol negotiation on automatic; pick NLA, TLS or RDP only to test which one fails. Make sure Turn off clipboard sync is not ticked, and set the audio output to local if you want the server’s sound. The Remote Desktop Gateway settings matter only if your company uses one.

  4. 4Connect and accept the certificate

    Save and double-click the profile. The first connection shows the server’s certificate; accept it if the fingerprint is the one you expect (see certificate prompts).

How do you connect with FreeRDP from the command line?

The FreeRDP 3 client is called xfreerdp3 on Debian and Ubuntu, so that it can be installed next to FreeRDP 2’s xfreerdp. Fedora ships FreeRDP 3 under the old name. xfreerdp3 /version tells you which one you have.

DistributionPackageCommand
Ubuntu 26.04freerdp3-x11xfreerdp3
Ubuntu 24.04freerdp3-x11 (main) or freerdp2-x11 (universe)xfreerdp3 or xfreerdp
Debian 13freerdp3-x11, freerdp3-sdlxfreerdp3, sdl-freerdp3
Debian 12freerdp2-x11 (FreeRDP 3 in bookworm-backports)xfreerdp
Fedorafreerdpxfreerdp (FreeRDP 3), sdl-freerdp
FreeRDP 3 · typical connections
xfreerdp3 /v:203.0.113.10 /u:Administrator /size:1600x900 /cert:tofu
xfreerdp3 /v:203.0.113.10:13389 /u:alice /d:EXAMPLE /f /cert:tofu     # other port, domain user, full screen
xfreerdp3 /v:203.0.113.10 /u:Administrator /dynamic-resolution +clipboard /drive:share,/home/you/share

Ctrl+Alt+Enter toggles full screen. On Debian 13 and Fedora, the SDL client (sdl-freerdp3 or sdl-freerdp) takes largely the same options and is the one to try on a Wayland desktop if the X11 client misbehaves there.

TaskFreeRDP 3FreeRDP 2, where different
Server, optional port/v:host:port
User and domain/u:alice /d:EXAMPLE
Window size/size:1600x900 or /size:90%
Resize Windows with the window/dynamic-resolution
Full screen/f
Trust the certificate on first use/cert:tofu/cert:tofu (/cert-tofu is deprecated)
Clipboard+clipboard
Share a local folder/drive:share,/home/you/share
Sound and microphone/sound /microphone
All monitors/multimon
List monitor ids/list:monitor/monitor-list
Use some monitors/monitors:0,1
Through a gateway/gateway:g:gw.example.com,u:alice,d:EXAMPLE/g:gw.example.com /gu:alice /gd:EXAMPLE
Force a security layer/sec:nla or /sec:tls
Keyboard layout/kbd:layout:0x00000407/kbd:0x00000407
Reconnect after a drop/auto-reconnect
More detail in the log/log-level:DEBUG

NLA and the right user name

With NLA, Windows checks the user name and password before it opens a session, so a wrong one ends the connection with an error instead of a Windows login screen. Most failures there come down to the user name format:

  • Local account on a standalone server or PC: /u:Administrator, no domain.
  • Domain account: /u:alice /d:EXAMPLE, or '/u:EXAMPLE\alice' in single quotes so that the shell keeps the backslash.
  • A PC that signs in with a Microsoft account: the account’s e-mail address and its password, not the Windows Hello PIN. If that fails although the password is right, sign in to the PC once with the password itself.

A password with characters the shell treats specially ($, !, quotes) is another reason to leave out /p: and type it at the prompt.

Certificate prompts

Windows protects RDP with a self-signed certificate unless someone installed a real one, so the first connection always asks. FreeRDP prints the certificate’s details, notes that “the above X.509 certificate could not be verified”, and asks Do you trust the above certificate? (Y/T/N): Y stores it, T accepts it for this connection only, N aborts. /cert:tofu stores it without asking the first time. If the certificate later changes, FreeRDP warns:

FreeRDP · changed certificate
!!!Certificate for 203.0.113.10:3389 (RDP-Server) has changed!!!
...
The above X.509 certificate does not match the certificate used for previous connections.
This may indicate that the certificate has been tampered with.
Please contact the administrator of the RDP server and clarify.

After a reinstall of Windows that is expected, because a new system makes a new certificate: accept the new one. If nothing changed on the server, do not connect. FreeRDP 3 keeps the accepted certificates under ~/.config/freerdp/server/, one file per host and port; FreeRDP 2 uses ~/.config/freerdp/known_hosts2. Remmina shows the same choice as a dialog.

Monitors, sound, clipboard and drives

Several monitors

/multimon spreads the Windows desktop over all your monitors in full screen. /list:monitor prints their ids, and /monitors:0,1 uses only those. /span instead makes one large desktop across them, which some applications handle better. Remmina offers the same multi-monitor choice in the connection profile.

Sound and microphone

/sound plays the Windows session’s audio on your Linux machine, through PulseAudio or PipeWire’s PulseAudio layer, and /microphone sends your microphone to Windows. If nothing plays from a Windows Server, check that the Windows Audio service is running there: Get-Service Audiosrv in PowerShell, and Set-Service Audiosrv -StartupType Automatic; Start-Service Audiosrv if it is not.

Clipboard

+clipboard shares copy and paste in both directions. When it stops working, the cause is usually on the server; the copy and paste guide walks through the policy and the rdpclip process.

Local folders on the server

/drive:share,/home/you/share makes that folder appear in the Windows session, in File Explorer under This PC and as \\tsclient\share. /home-drive shares your whole home folder. Share only what you need: the Windows side can read and write whatever you redirect, and a compromised server can reach into it.

Connecting through a Remote Desktop Gateway

Companies often put RDP behind a Remote Desktop Gateway, which carries the session inside HTTPS on port 443 and lets only authenticated users through to the machines behind it. Name the target with /v: and the gateway separately:

FreeRDP 3 · through a gateway
xfreerdp3 /v:pc42.corp.example.com /u:alice /d:CORP \
  /gateway:g:rdgw.example.com,u:alice,d:CORP /cert:tofu

FreeRDP 2 takes the older /g:, /gu:, /gd: and /gp: options. In Remmina, the profile has its own fields for the gateway server, user, password, domain and transport type (http, rpc or auto).

ERRCONNECT errors and other failures

FreeRDP ends a failed connection with a log line that names the error and its code, for example ERRCONNECT_LOGON_FAILURE [0x00020014]. Remmina reports the same failures in its own words; to see FreeRDP’s name for one, repeat the connection with xfreerdp3 in a terminal and add /log-level:DEBUG if the reason is still unclear. The descriptions below are FreeRDP’s own:

ErrorFreeRDP saysWhat to check
ERRCONNECT_DNS_NAME_NOT_FOUND [0x00020005]The DNS host name was not found.A typo in the name, or connect by IP address
ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]The connection transport layer failed.No TCP connection: server off, RDP disabled, firewall, wrong port. Test with nc -vz
ERRCONNECT_CONNECT_FAILED [0x00020006]The connection failed.Read the log lines above it; then the same checks
ERRCONNECT_LOGON_FAILURE [0x00020014]Logon failed.User name format, password, and whether the account may use RDP
ERRCONNECT_PASSWORD_EXPIRED [0x0002000E]The password has expired and must be changed.NLA cannot change it: change it on the console or from a Windows client
ERRCONNECT_ACCOUNT_LOCKED_OUT [0x00020018]Account locked out.Too many wrong passwords: wait for the lockout to end or unlock the account
ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED [0x0002000C]The connection failed at negotiating security settings.Remove a forced /sec:, or try /sec:nla and /sec:tls to see which one fails
ERRCONNECT_TLS_CONNECT_FAILED [0x00020008]The connection failed at TLS connect.An outdated server. Update it; only for a legacy box on your own network, /tls:seclevel:0
ERRCONNECT_AUTHENTICATION_FAILED [0x00020009]An authentication failure aborted the connection.User name format and password first; for NLA problems on the server side, see CredSSP
  • Wrong characters, such as Y and Z swapped. FreeRDP sends your keyboard layout when the session starts. Pass it explicitly with /kbd:layout:0x00000407 (German here; /list:kbd prints the ids), or set the layout inside Windows.
  • Blurry or tiny on a high-resolution screen. Use /dynamic-resolution so that Windows renders at your window’s real size, and /scale-desktop:150 to make Windows draw text and icons larger.

Connecting to a Windows VPS from Linux

A VMHeaven Windows VPS is an ordinary Windows Server, so everything above applies: put its IPv4 address in Remmina or after /v: and sign in as Administrator. If RDP does not answer yet, the VNC console in the panel still shows the screen, which is the way back in after a firewall rule or a changed port. Once it works, the RDP hardening guide is the next step. Going the other way, a desktop on a Linux server that you reach with the same clients, is what xrdp on Ubuntu and Debian sets up.

Frequently asked

How do I remote desktop from Linux to Windows?

Install Remmina with its RDP plugin ('sudo apt install remmina remmina-plugin-rdp' on Ubuntu or Debian), create a profile with the protocol set to RDP, enter the Windows machine's IP address, user name and password, and connect. On the command line FreeRDP does the same: 'xfreerdp3 /v:IP /u:USER /cert:tofu'. Windows must be a Pro, Enterprise, Education or Server edition with Remote Desktop switched on.

Is the FreeRDP command xfreerdp or xfreerdp3?

It depends on the distribution. Debian and Ubuntu name the FreeRDP 3 client xfreerdp3 (package freerdp3-x11) so that it can sit next to FreeRDP 2's xfreerdp. Fedora ships FreeRDP 3 under the old name xfreerdp. Debian 12 has only FreeRDP 2 unless you use bookworm-backports. 'xfreerdp3 /version' or 'xfreerdp /version' shows which one you have.

What does ERRCONNECT_CONNECT_TRANSPORT_FAILED mean?

FreeRDP could not open a TCP connection to the RDP port. The Windows machine is off, Remote Desktop is disabled, a firewall blocks the port, or RDP listens on another port than the one you used. Test the port with 'nc -vz -w 5 IP 3389' before you change any client setting.

Does Remmina support Network Level Authentication?

Yes. Remmina connects through FreeRDP, which supports NLA, so it works with Windows servers that require it. Leave the profile's security protocol negotiation on automatic. If the login fails, check the user name format and the password first, because with NLA Windows checks them before it opens a session.

Related articles

All guides